`
zhenping
  • 浏览: 84245 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Fizz Buzz programming

 
阅读更多
Fizz Buzz programming

Fizz Buzz挺有趣的题目,我现在是按照这个题目简单的实现了编码测试.

1.题目:

Inverse Fizz Buzz

Thisis a lot more complicated than the fizzbuzz problem, and takes some realthinking to get right.

Theaim of the test is to discover the shortest sequence of consecutive numbers,which when they are run through the fizzbuzz algorithm produce the requiredoutput.


Forexample, the shortest sequence that producesfizzis3


Whenlooking for the shortest sequence for

fizz buzz

onesequence that produces that output is

3, 4, 5

However,this isn't the shortest. The shortest sequence is9, 10


Inour case, we are only interested in the numbers between 1 and 100, so be sureyou limit your calculations to that range, otherwise you are likely to exceedtimeout limits.

2.Code

InverseFizzBuzz.java

3. package devtest;

4.

5. import java.util.Iterator;

6. import java.util.Map;

7. import java.util.Set;

8. import java.util.TreeMap;

9. import java.util.logging.Logger;

10.

11. public class InverseFizzBuzz {

12.

13.

14. private Logger logger = Logger.getLogger(InverseFizzBuzz.class.getName());

15.

16. private Integer[] finalRange = null;

17.

18. private final int FizzDivisor = 3;

19. private final int BuzzDivisor = 5;

20.

21. private String pattern = "";

22.

23. /**

24. * FIZZ i % 3 == 0

25. */

26. private static final String FIZZ = "fizz";

27. /**

28. * BUZZ i % 5 == 0;

29. */

30. private static final String BUZZ = "buzz";

31.

32.

33. private static final String FizzBuzz="fizzbuzz";

34.

35.

36. private static final String BuzzFizz="buzzfizz";

37.

38.

39. private static final String FizzBuzzFizz="fizzbuzzfizz";

40.

41.

42. private static final String FizzFizz="fizzfizz";

43.

44.

45. private static final String FizzFizzBuzz="fizzfizzbuzz";

46.

47. /**

48. *

49. */

50. public InverseFizzBuzz(String[] list) {

51. logger.info("Fizz Divisor = " + FizzDivisor);

52. logger.info("Buzz Divisor = " + BuzzDivisor);

53. for(String s : list){

54. this.pattern = this.pattern + s;

55. }

56. }

57. private void calculateFIZZ(){

58. for(int i = 1 ; i <= 100 ; i++){

59. if (i % FizzDivisor == 0 && i % BuzzDivisor != 0) {

60. this.finalRange = new Integer[] { i };

61. break;

62. }

63. }

64. }

65.

66. private void calculateBUZZ(){

67. for(int i = 1 ; i <= 100 ; i++){

68. if (i % FizzDivisor != 0 && i % BuzzDivisor == 0) {

69. this.finalRange = new Integer[] { i };

70. break;

71. }

72. }

73. }

74.

75. private void calculateFizzBuzz(){

76. for(int i = 1 ; i <= 100 ; i++){

77. if (i % FizzDivisor == 0 && (i+1) % BuzzDivisor == 0) {

78. this.finalRange = new Integer[] { i ,i+1};

79. break;

80. }

81. }

82. }

83. private void calculateBuzzFizz(){

84. for(int i = 1 ; i <= 100 ; i++){

85. if (i % BuzzDivisor == 0 && (i+1) % FizzDivisor == 0) {

86. this.finalRange = new Integer[] { i ,i+1};

87. break;

88. }

89. }

90. }

91. private void calculateFizzBuzzFizz(){

92. Map<Integer,String> hashMap = new TreeMap<Integer,String>();

93. int num1 = 1, num2 = 1, num3 = 1;

94. for (int i = 1; i <= 100; i++) {

95. if (i % FizzDivisor == 0 && i % BuzzDivisor != 0) {

96. hashMap.put(i, FIZZ);

97. } else if (i % FizzDivisor != 0 &&i % BuzzDivisor == 0) {

98. hashMap.put(i,BUZZ);

99. }

100. }

101. Set<Integer> keySet = hashMap.keySet();

102. boolean bool = false;

103. for (Iterator<Integer> it = keySet.iterator(); !bool && it.hasNext();) {

104. int key = it.next();

105. String keyValue = hashMap.get(key);

106. if(keyValue.equals(FIZZ)){

107. if(num1 == 1){

108. num1 = key;

109. }else{

110. num3 = key;

111. }

112. }else if(keyValue.equals(BUZZ)){

113. num2 = key;

114. }

115.

116. if(num1 != 1 && num2 != 1 && num3 !=1 && num1 < num2 && num2 < num3){

117. this.finalRange = new Integer[num3-num1 + 1];

118. for(int j=0,i = num1; i <= num3 ; i ++,j ++){

119. this.finalRange[j] = i;

120. }

121. bool = true;

122. }

123. }

124. }

125.

126. private void calculateFizzFizz(){

127. Map<Integer,String> hashMap = new TreeMap<Integer,String>();

128. int num1 = 1, num2 = 1;

129. for (int i = 1; i <= 100; i++) {

130. if (i % FizzDivisor == 0 && i % BuzzDivisor != 0) {

131. hashMap.put(i, FIZZ);

132. }

133. }

134. Set<Integer> keySet = hashMap.keySet();

135. int buff = 0;

136. boolean bool = false;

137. for (Iterator<Integer> it = keySet.iterator(); !bool && it.hasNext();) {

138. buff = it.next();

139. if(num1 == 1 && num2 == 1){

140. num1 = buff;

141. num2 = buff;

142. }else{

143. num2 = buff;

144. }

145. boolean flag = false;

146. if(num1 != 1 && num2 != 1 && num1 < num2){

147. for(int i = num1; i <= num2 ; i ++){

148. if( i % BuzzDivisor != 0){

149. continue;

150. }else{

151. num1 = num2 ;

152. flag = true;

153. break;

154. }

155. }

156. if(!flag){

157. setData(num2,num1);

158. bool = true;

159. }

160. }

161. }

162. }

163.

164.

165. /** <Description functions in a word>

166. * <Detail description>

167. * @author Peter.Qiu [Parameters description]

168. * @return void [Return type description]

169. * @exception throws [Exception] [Exception description]

170. * @see [Related classes#Related methods#Related properties]

171. */

172. private void calculateSequenceRange(){

173. if(this.pattern.equals(FIZZ)){

174. calculateFIZZ();

175. }else if(this.pattern.equals(BUZZ)){

176. calculateBUZZ();

177. }else if(this.pattern.equals(FizzBuzz)){

178. calculateFizzBuzz();

179. }else if(this.pattern.equals(BuzzFizz)){

180. calculateBuzzFizz();

181. }else if(this.pattern.equals(FizzBuzzFizz)){

182. calculateFizzBuzzFizz();

183. }else if(this.pattern.equals(FizzFizz)){

184. calculateFizzFizz();

185. }else if(this.pattern.equals(FizzFizzBuzz)){

186. calculateFizzFizzBuzz();

187. }

188. }

189. private void calculateFizzFizzBuzz(){

190. calculateFizzFizz();//shortest of FizzFizz

191. int maxRange = this.finalRange[finalRange.length - 1];//

192. int minRange = this.finalRange[0];//

193. for(int i = maxRange ; i <= 100 ; i ++){

194. if(i % BuzzDivisor == 0){

195. maxRange = i;

196. break;

197. }

198. }

199. setData(maxRange,minRange);

200. }

201.

202. private void setData(int max, int min){

203. this.finalRange = new Integer[max- min + 1];

204. for(int j =0, i = min ; i <= max ; i++,j++ ){

205. this.finalRange[j] = i;

206. }

207. }

208. private void displayInfo() {

209. logger.info("=======Dispaly Info Start===============");

210. logger.info(this.pattern);

211. String result = "";

212. for(int i = 0 ; finalRange !=null && i < finalRange.length ; i ++){

213. Integer num = finalRange[i];

214. if(i < finalRange.length - 1){

215. result += num+",";

216. }else{

217. result += num;

218. }

219. }

220. logger.info(result);

221. logger.info("=======Dispaly Info End==============");

222. }

223.

224. public Integer[] sequence() {

225. calculateSequenceRange();

226. displayInfo();

227. return finalRange;

228. }

229.

230.}

git clone http://git.devtest.net/525f3dd13886977b57372de12c9c0818e633b3e74eb694027a7ee40333f4d230.git devtest

完整的编码及测试:http://download.csdn.net/detail/qiu_11/7791551

写的很简陋,有兴趣的同学可以继续研究。

分享到:
评论

相关推荐

    f_b.rar_fizz buzz

    《Fizz Buzz算法详解》 Fizz Buzz算法,作为一个经典的面试题,常常被用于考察候选人的编程基础和逻辑思维能力。这个看似简单的游戏规则背后,蕴含着基础的编程逻辑和条件判断的知识点,对于初学者和有经验的开发者...

    fizz-buzz-java:Fizz Buzz kata的源代码。 视频在

    Fizz Buzz是一种经典的编程练习,常用于面试或教学中,旨在帮助初学者理解基本的控制流、条件语句和循环。这个题目要求编写一个程序,打印从1到指定数(通常是100)的所有数字,但对于3的倍数,打印"Fizz"代替数字,...

    fizzbuzz:不同语言的 Fizz buzz 实现

    Fizz buzz 是一个简单的数学游戏,其中每个可以被 3 整除的数字都被替换为“Fizz”这个词,每个可以被 5 整除的数字都被替换为“Buzz”,以及每个可以被两者整除的数字得到“嘶嘶声”。 这些短程序中的任何一个的...

    LeetCode 412. Fizz Buzz

    如果 n 是3的倍数,输出“Fizz” 如果 n 是5的倍数,输出“Buzz” 如果 n 同时是3和5的倍数,输出 “FizzBuzz” 示例: n = 15, 返回: [ 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, ...

    fizz-buzz-python:Jeu Fizz Buzz en Python

    Fizz Buzz游戏是一个经典的编程练习,通常用于面试或教学目的,以测试候选人的基本编程技能和逻辑思维能力。这个游戏的规则相当简单:从1开始,对于每个数字,你需要根据以下规则打印出相应的输出: 1. 如果数字是3...

    Fizz-Buzz:用您最喜欢的编程语言提供的一系列很棒的Fizz Buzz程序

    1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, FizzBuzz, 31, 32, Fizz, 34, Buzz, Fizz, ... 概述 Fizz ...

    fizbuz.biz:FBaaS(Fizz Buzz即服务)

    【Fizz Buzz服务详解】 Fizz Buzz服务,简称FBaaS,是一种基于网络的编程挑战或测试工具,它实现了经典的Fizz Buzz问题的在线版本。Fizz Buzz问题是一个常见的面试题,旨在考察候选人的编程逻辑和基本的控制流理解...

    fizz-buzz:Fizz Buzz计算器

    Fizz Buzz计算器是一个经典的编程练习,通常用于面试或教学中,以测试候选人的基本编程技能和逻辑思维能力。这个挑战的基本规则是打印从1到指定数(例如100)的所有整数,但遇到以下情况时要遵循特定规则: 1. 当...

    fizz-buzz-lab

    #Fizz Buzz 创建一个函数来返回Fizz 、 Buzz 、 FizzBuzz或它接收到的参数,这一切都取决于函数的参数,一个可以分别被3 、 5或3和5整除的数字。 当数字不能被3或5整除时,应返回数字本身。如何运行这个实验室克隆...

    fizzbuzzing:Fizz Buzz进行了一些测试!

    在IT行业中,`Fizz Buzz` 是一个非常经典的面试问题,主要用来评估候选人的编程基础和逻辑思维能力。这个挑战要求编写一个程序,打印从1到指定数字(通常为100)的序列,但遇到3的倍数时输出 "Fizz",5的倍数输出 ...

    Fizz-Buzz:Thinkful FEWD 项目的基本 JavaScript Fizz Buzz 页面

    嘶嘶声Thinkful FEWD 项目的基本 JavaScript Fizz Buzz 页面 。

    fizz-buzz-pop-js:在JavaScript中使用Fizz Buzz Pop

    fizz-buzz-pop-js 在JavaScript中使用Fizz Buzz Pop 该存储库中的代码用于演示如何使用NodeJS创建开源端到端解决方案。 此解决方案还提供了将库直接自动发布到NpmJS注册表的功能。 使用的技术: 节点npm 特拉维斯...

    fizz-buzz

    "Fizz Buzz"是一个经典的编程练习,它要求程序员编写一个程序,对从1到指定数的数字序列进行遍历。当数字可以被3整除时,输出“Fizz”;当数字可以被5整除时,输出“Buzz”;如果既能被3又能被5整除,则输出“Fizz ...

    c语言-leetcode题解412-fizz-buzz.c

    c语言入门 c语言_leetcode题解412-fizz-buzz.c

    kata2TDD-FizzBuzz:Kata TDD - 持续集成 - Fizz Buzz

    【标题】"kata2TDD-FizzBuzz:Kata TDD - 持续集成 - Fizz Buzz" 是一个编程练习,旨在帮助开发者通过测试驱动开发(Test-Driven Development, TDD)方法来实现一个Fizz Buzz问题,并结合持续集成(Continuous ...

    fizz-buzz:Fizz Buzz 游戏的 Groovy 实现

    嘶嘶声 FizzBu​​zz 是一款流行的游戏,作为编程任务在求职面试... 如果这个数字能被 3 整除打印 Fizz 如果数字可以被 5 整除,则打印 Buzz 如果数字可以被 3 和 5 整除 (15) 打印 FizzBu​​zz 否则,打印数字。

    C++-leetcode题解之412-Fizz-Buzz.cpp

    c++ C++_leetcode题解之412_Fizz_Buzz.cpp

    FizzBuzzJS:javaScript 中的 Fizz Buzz 测试

    FizzBu​​zzJS javaScript 中的 Fizz Buzz 测试“编写一个程序,打印从 1 到 100 的数字。但是对于 3 的倍数打印“Fizz”而不是数字,对于 5 的倍数打印“Buzz”。对于同时是 3 和 5 的倍数的数字打印“FizzBu​​...

    java代码-LeetCode 412. Fizz Buzz

    Fizz Buzz】是一个经典的编程问题,它涉及到条件判断、循环控制以及字符串操作等基础知识。这个问题的目标是编写一个程序,打印从1到n的数字序列,但遇到以下特殊情况时,用特定的词替换数字: 1. 当数字可以被3...

    python-leetcode面试题解之第412题Fizz-Buzz.zip

    python python_leetcode面试题解之第412题Fizz_Buzz

Global site tag (gtag.js) - Google Analytics