1 名前:(´・ω・`) ◆Hc1VAagKMg [2008/04/29(火) 20:06:06 ] 1から100までの数をプリントするプログラムを書け。 ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm 言語自由
192 名前:仕様書無しさん mailto:sage [2009/09/17(木) 23:17:09 ] >>190-191 そもそもプログラマとしての素養を見るための問題の例として挙げられたものだから 引っかけとか特に必要ないんだよ
193 名前:仕様書無しさん mailto:sage [2009/09/18(金) 23:12:18 ] 普通のプログラマなら2分以内で書けて当たり前という程度には簡単。
194 名前:仕様書無しさん mailto:sage [2009/09/19(土) 14:18:17 ] 「2分」ってよく言われるけど、 「問題用紙をめくって下さい」から、「動作確認終わりました」まで、 必ずしも2分以内に終わらないよ。 特に、自分が普段はあまり使っていないような言語では。 問題文見て、面食らってる時間とか、 改行コードの出力、全パターンで共用した方がいいのかどうか思案する時間とか、 インクルード文なんだっけ、main関数の戻り値にvoid許可されてたっけとか、 Javaのクラスパスが通ってないとかw 2分以内と言ってる人は、何度も書いてるから、2分で出来るようになっただけ。
195 名前:仕様書無しさん mailto:sage [2009/09/19(土) 14:31:04 ] んなこたーどうでもいいんだよ
196 名前:仕様書無しさん [2009/09/19(土) 14:43:36 ] FizzBuzz
197 名前:仕様書無しさん mailto:sage [2009/09/19(土) 14:45:47 ] 195取られた
198 名前:仕様書無しさん mailto:sage [2009/09/20(日) 15:04:59 ] >>194 ん?言語の指定はないんだが……
199 名前:仕様書無しさん mailto:sage [2009/09/20(日) 20:44:10 ] >>194 FizzBuzzの2分は誤訳だってよ。
200 名前:仕様書無しさん mailto:sage [2009/09/20(日) 22:37:29 ] #pythonのリストコンプリヘンションで遊んでみた def nvl(x,y): if x: return x; return y; fizz = (['','','fizz']*100)[0:100]; buzz = (['','','','','buzz']*100)[0:100]; num = map(lambda x:str(x),range(1,101)); print map(nvl,map(lambda x,y:x+y,fizz,buzz),num);
201 名前:仕様書無しさん mailto:sage [2009/09/20(日) 23:13:31 ] ちょっとだけ、悪ノリ。(C言語) #include <stdio.h> #include <memory.h> int main(void) { int i; char buf[8]; printf("<html><head><title>クソスレ</title></head><body><dl>"); for (i=1;i<=1001;i++) { char* s1, *s2, *s3, *s4; sprintf(buf,"%d",i); s2 = "blue"; s3 = " "; s4 = "投稿日: 2009/09/20(日) 23:59:59 ID:FizzBuzz"; if (i%1001==0) { s1 = "このスレッドは1000を超え(ry"; s2="green"; s4="投稿日: Over 1000 Thread"; } else if (i%15==0) { s1 = "fizzbuzz"; s3="[fizzbuzz]"; } else if (i%3==0) { s1 = "fizz"; s3="[fizz]"; } else if (i%5==0) { s1 = "buzz"; s3="[buzz]"; } else { s1 = buf; s2 = "green"; s3 = " "; } printf("<dt>%d 名前:<font color=\"%s\"><b>仕様書無しさん</b>%s</font> %s</dt> ",i,s2,s3,s4); printf("<dd style=\"padding:1em 0em\";>%s</dd>",s1); } printf("</dl></body></html>"); return 0; }
202 名前:仕様書無しさん mailto:sage [2009/09/21(月) 11:41:01 ] >>192 プログラマの素養が関係ないような問題で素養を見ようとする意図って何なんだろうな。 結局、元のブログ主の?話題づくりに利用されているだけな気が知る
203 名前:仕様書無しさん mailto:sage [2009/09/21(月) 12:19:30 ] 元ネタ知らずにレスしてる香具師いたのか。
204 名前:ぅゅ ◆e6.oHu1j.o [2009/09/22(火) 12:13:28 ] この問題って日本のものじゃないよね 海外っていうとレベル高そうにおもえるけど実はそうでもないんじゃ
205 名前:仕様書無しさん mailto:sage [2009/09/22(火) 12:19:23 ] PowerShellバージョンが最強だな
206 名前:仕様書無しさん mailto:sage [2009/09/22(火) 19:19:48 ] >>202 この問題すら解けない奴がいるって事なんじゃまいか?
207 名前:仕様書無しさん mailto:sage [2009/09/23(水) 00:08:33 ] >>202 たとえ時間を充分にかけても正答にたどり着けないような人が 現実にはたくさん面接に来るんだよ 素養があるかどうかを見るんではなくて 素養がまるでない人をふるい落とすための簡易的な試験という位置づけ
208 名前:仕様書無しさん [2009/09/23(水) 00:23:36 ] Fortran90 program hoge implicit none integer :: i do i=1,200 if (mod(i,15).eq.0) then print *,'Fizz Buzz' else if (mod(i,5).eq.0) then print *,'Buzz' else if (mod(i,3).eq.0) then print *,'Fizz' else print *,i end if end do end program hoge
209 名前:仕様書無しさん mailto:sage [2009/09/24(木) 12:59:58 ] >>203 >>1 のリンク先すら読まない莫迦が そんだけ沢山いるってことでしょうな。
210 名前:仕様書無しさん mailto:sage [2009/09/24(木) 16:41:34 ] スレタイ嫁、1嫁だけなら分かるけど、 1のリンク先まで必須となると、何か違うような気がする。 あと、何ていうか、「リンク先まで嫁」と、「2分以内」って、同じ部類のように思える。 自分の脳内ででっち上げた完璧さを、周囲の人に対して、期待している点において。 嫌味な言い方をすれば、配慮や謙虚さが足りないって言うか。
211 名前:仕様書無しさん mailto:sage [2009/09/25(金) 03:28:04 ] それをたらたら書いてる時間でリンク先読むのは十分可能だよな? 元ネタは採用試験の話だ、くらいはFizzBuzzより簡単にわかるよな。 配慮や謙虚さが足りないって、むしろそっちじゃないのか。 嫌味な言い方だがな。
212 名前:仕様書無しさん mailto:sage [2009/09/25(金) 15:11:26 ] 情報の提示の仕方が悪い、 ボクちゃんは悪くない、おまえが悪い、おまえの教え方が悪い というのは、典型的なゆとり脳の主張ですw
213 名前:仕様書無しさん [2009/10/19(月) 21:26:19 ] 出来るだけ短く ここで一応動いたよ。→codepad.org/ #include <stdio.h> #define p printf main(){int i;for(i=1;i<=100;i++)if(!p("%s",p("%s%s",i%3?0:"Fizz",i%5?0:"Buzz")?"\n":0))p("%d\n",i);}
214 名前:仕様書無しさん mailto:sage [2009/10/19(月) 22:09:10 ] これはコードゴルフじゃないんだぜ。 実行環境はなし。もしコンパイルが通らない、結果が間違っていたらその場で銃殺。 というシビアな条件で最も間違いにくいコードに最高得点をあげたい。
215 名前:仕様書無しさん [2009/10/19(月) 22:28:45 ] その条件だと、HQ9F+で書くのが、最強か? ttp://cfs.maxn.jp/neta/HQ9F+.html ※元になったのはHQ9+という、ネタ言語。 Hと入力すれば、Hello worldを出力してくれる。 ttp://ja.wikipedia.org/wiki/HQ9%2B
216 名前:コード書き忘れた mailto:sage [2009/10/19(月) 22:30:41 ] ++++++++++f 私の個人的な意見になるけど、 Fの一文字で、FizzBuzzを出力できるようにした方が、HQ9+っぽいと思うんだけどね。
217 名前:仕様書無しさん mailto:sage [2009/10/19(月) 22:45:37 ] Cで書いたら緊張のあまりセミコロン忘れてあぼーんだなw
218 名前:Go mailto:sage [2009/11/17(火) 17:06:00 ] package main import "fmt" func main() { for i:=1;i<101;i++ { s:=""; if i%3==0 { s+="Fizz" } if i%5==0 { s+="Buzz" } if s=="" { s=fmt.Sprintf("%d",i) } fmt.Printf(s+"¥n") } }
219 名前:仕様書無しさん mailto:sage [2009/11/17(火) 19:50:32 ] 何度見ても気持ち悪い文法だなあ
220 名前:仕様書無しさん mailto:sage [2009/11/18(水) 05:13:33 ] for i in range(100): if (i % 3) == 0 and (i % 5) == 0: print u'FizzBuzz' elif (i % 3) == 0: print u'Fizz' elif (i % 5) == 0: print u'Buzz' else: print i
221 名前:うゆ ◆e6.oHu1j.o mailto:sage [2009/12/03(木) 05:10:19 ] 100.times do |n| str = String.new str = n%15==0?:fizzbuzz:n%5==0?:fizz:n%3==0?:buzz:"" print "%03d:%s\n" % [n,str] end
222 名前:仕様書無しさん mailto:sage [2010/04/21(水) 22:59:37 ] 剰余(割り算の余り)を出すのに演算子の % 以外で計算できますか? % を忘れると大変だぞ!
223 名前:仕様書無しさん [2010/04/21(水) 23:31:11 ] 剰余 % を忘れたときに使える方法だと思う。 この問題で肝心なところは % と 「かつ」の && だな。あー恥ずかしい class TestFizBuz { public void mes() { int int3 = 0; int int5 = 0; for (int i = 1; i <= 100; i++) { if (int3 < i/3 && int5 < i/5) { System.out.println("FizzBuzz: " + i); int3 = i/3; int5 = i/5; } else if (int3 < i/3) { System.out.println("Fizz: " + i); int3 = i/3; } else if (int5 < i/5) { System.out.println("Buzz: " + i); int5 = i/5; } else { System.out.println(i); } } } public static void main(String[] args) { TestFizBuz tfb = new TestFizBuz(); tfb.mes(); } }
224 名前:仕様書無しさん mailto:sage [2010/04/22(木) 00:07:26 ] 向こうの子供はハッキングしまくりだってのにお前らときたら… 【調査】13歳までにハッキングをした経験した34%――米英の若者の実態調査(10/04/15) pc11.2ch.net/test/read.cgi/pcnews/1271336569/
225 名前:仕様書無しさん mailto:sage [2010/04/22(木) 02:12:40 ] >>221-223 うゆw問題からしてわかってねぇwwさすが天才www "mes"w "kard"とおんなじwwメソッドwww
226 名前:仕様書無しさん [2010/04/23(金) 00:56:20 ] >>225 223は動作は当たっているんじゃない。 % を使用しない方法ではこれでいいんじゃない?
227 名前:仕様書無しさん mailto:sage [2010/04/23(金) 01:42:01 ] >>224 それってさ、漏れパスを使ったとか 正しい言い方忘れたが、「スクリプト使用のガキ」も含んででない?
228 名前:仕様書無しさん mailto:sage [2010/04/23(金) 01:44:07 ] Script kiddie ?
229 名前:仕様書無しさん mailto:sage [2010/04/23(金) 02:07:26 ] >>226 %を使う使わない以前に結果を他のコードと比べるくらいなぜできない? 数学のテストで「計算結果は違うけど式はあってますよね」とか言うクチか。
230 名前:仕様書無しさん mailto:sage [2010/04/23(金) 02:59:12 ] %を忘れたwという変な条件を入れたとしても、 int reminder(int divisor, int dividend) みたいな相当するメソッドを作るだろふつー。 直近の3と5の倍数を保持して商と比べるなんてせんでも。 void型のメソッドしか認めんwのなら別だけどさ。
231 名前:仕様書無しさん mailto:sage [2010/04/23(金) 14:41:46 ] >>229 結果は当たっているよ。書き方の問題ね。
232 名前:仕様書無しさん mailto:sage [2010/04/23(金) 14:57:18 ] >>1 >1から100までの数をプリントするプログラムを書け。 >ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 とあるのに3や5をプリントアウトしたらただの間違いだろ。 問題をちゃんと読んでねぇアホじゃねーか。
233 名前:231 mailto:sage [2010/04/23(金) 15:26:12 ] >>232 あー そこか
234 名前:仕様書無しさん mailto:sage [2010/04/24(土) 03:25:23 ] 223に感動した。 コード読んでも、何やってるのかワカランかったが、 int3, i/3, int5, i/5 の値を出力してみたら、発想の奇抜さにたまげた。
235 名前:234 mailto:sage [2010/04/24(土) 03:33:23 ] 233の計算テクはそのままで、変数int3,int5を取り去ったコード。 if ((i-1)/3!=i/3 && (i-1)/5!=i/5) { printf("FizzBuzz\n"); } else if ((i-1)/3!=i/3) { printf("Fizz\n"); } else if ((i-1)/5!=i/5) { printf("Buzz\n"); } else { printf("%d\n",i); }
236 名前:仕様書無しさん mailto:sage [2010/04/24(土) 03:35:25 ] 訂正 ×233 ○223 あと、if ((i-1)/15!=i/15) でOKだ。
237 名前:仕様書無しさん mailto:sage [2010/04/24(土) 03:59:03 ] iが正の整数なら剰余%は除数xについてi-(int(i/x)*x)なんだから当たり前じゃん。 %を忘れてどうこうってのがどうかしてる。馬鹿?
238 名前:仕様書無しさん mailto:sage [2010/04/24(土) 10:03:06 ] %を忘れた人のため:その2 #include <stdio.h> int rem3is0[16]={1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1}; int rem5is0[16]={1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}; int compact( unsigned int n ) { n = ( n & 0x0f0f0f0f ) + ((n>>4 )&0x0f0f0f0f); n = ( n & 0x00ff00ff ) + ((n>>8 )&0x00ff00ff); n = ( n & 0x0000ffff ) + ((n>>16 )&0x0000ffff); return ( n > 15 )? compact(n): n; } #define N 100 int main( ) { unsigned int i; for( i = 1; i <= N; ++i ) { int j = compact(i); if( rem3is0[j] & rem5is0[j] ) { printf( "FizzBuzz " ); } else if( rem3is0[j] ) { printf( "Fizz " ); } else if( rem5is0[j] ) { printf( "Buzz " ); } else { printf( "%i ", i ); } } }
239 名前:仕様書無しさん mailto:sage [2010/04/24(土) 10:14:09 ] 修正: "%i " → "%u "
240 名前:仕様書無しさん mailto:sage [2010/04/24(土) 13:09:56 ] >238の応用 その3 ifも忘れた人のため #include <stdio.h> char *fz[16]={"","%u ","%u ","Fizz ","%u ","Buzz ","Fizz ", "%u ","%u ","Fizz ","Buzz ","%u ","Fizz ","%u ","%u ","FizzBuzz "}; int compact( unsigned int n ) { n = ( n & 0x0f0f0f0f ) + ((n>>4 )&0x0f0f0f0f); n = ( n & 0x00ff00ff ) + ((n>>8 )&0x00ff00ff); n = ( n & 0x0000ffff ) + ((n>>16 )&0x0000ffff); return ( n > 15 )? compact(n): n; } #define N 100 int main( ) { unsigned int i; for( i = 1; i <= N; ++i )printf( fz[compact(i)],i); }
241 名前:仕様書無しさん mailto:sage [2010/04/24(土) 13:23:30 ] >>240 いや、それだとこれと変わらなくて興が削がれるからだめだろ。 #include <stdio.h> char *fz[16]={"","%u ","%u ","Fizz ","%u ","Buzz ","Fizz ", "%u ","%u ","Fizz ","Buzz ","%u ","Fizz ","%u ","%u ","FizzBuzz "}; int main( ) { unsigned int i; for( i = 1; i <= 100; ++i )printf( fz[i-i/15*15],i); }
242 名前:仕様書無しさん mailto:sage [2010/04/24(土) 13:35:29 ] あまり変わらんけど関数テーブル版 #include <stdio.h> #include <stdint.h> void fb(uint32_t x){ printf( "FizzBuzz " ); } void f(uint32_t x){ printf( "Fizz " ); } void b(uint32_t x){ printf( "Buzz " ); } void n(uint32_t x){ printf( "%lu ", (unsigned long)x ); } void (*fn[4])(uint32_t) = { n, b, f, fb }; const uint32_t FN = 0xc1241843; unsigned int compact( uint32_t n ) { n = ( n & 0x0f0f0f0f ) + ((n>>4 )&0x0f0f0f0f); n = ( n & 0x00ff00ff ) + ((n>>8 )&0x00ff00ff); n = ( n & 0x000000ff ) + ((n>>16 )&0x000000ff); n = ( n & 0x0000000f ) + ((n>>4 )&0x0000000f); n = ( n & 0x0000000f ) + ((n>>4 )&0x0000000f); return n; } #define N 100 int main( ) { for( uint32_t i = 1; i <= N; ++i ) { (*fn[(FN>>compact(i)*2)&3])(i); } }
243 名前:仕様書無しさん mailto:sage [2010/04/24(土) 21:33:16 ] これはすごいね。 15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという 理解でいいのかな。 class FizzBuzz { static final String strFizBuz[] = {"","","Fizz ","","Buzz ","Fizz ", "","","Fizz ","Buzz ","","Fizz ","","","FizzBuzz "}; public static void main(String[] args) { int count = 0; for (int i = 1; i <= 100; i++) { if (strFizBuz[count].equals("")) { System.out.println(i); count++; } else if (strFizBuz[count].equals("Fizz ") || strFizBuz[count].equals("Buzz ")) { System.out.println(strFizBuz[count]); count++; } else if (strFizBuz[count].equals("FizzBuzz ")) { System.out.println(strFizBuz[count]); count = 0; } } } } 簡単にするとこれでもOKでしょ
244 名前:仕様書無しさん mailto:sage [2010/04/24(土) 22:55:00 ] >243 >15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという >理解でいいのかな。 全然違う。 関数compactが15で割った余りを(%演算子無しで)計算しているのがポイント。 下から4bitづつに区切って(まぁ上からでも同じだけど)、それを全部足したものと元の値では 15で割った余りが同じになることを利用している。 なぜそうなるかはちょっと頭をしぼって考えてみな
245 名前:仕様書無しさん mailto:sage [2010/04/24(土) 23:07:38 ] 10進数でmod 9が各桁の値の和に等しいってのと同じ話か。 16進数で考えてみようと思ったことが無かったぜ。
246 名前:仕様書無しさん mailto:sage [2010/04/24(土) 23:53:32 ] 明らかに%演算子より知名度低そうな知識だな…
247 名前:243 mailto:sage [2010/04/25(日) 09:43:48 ] >>244 違っていたか。しぼって考えてみます。
248 名前:(u_・y) ◆e6.oHu1j.o mailto:sage [2010/04/26(月) 04:48:47 ] >>225 おれが過去にかいたコードを描いたときにかんがえてた事を 予想すると、お前のその意味不明なレスもなんとなくわかるよ おれが適当に描いた部分は、 たとえ、プログラミング知らない奴でも修正できそうなレベルだ っていうところまではわかるか?? だれにでも解ける場所とか、自分が過去に解いた場所は適当になる それがuy。 その適当具合は、常軌を逸しているかもしれない 問題すら適当に読むか読まないし、コンパイルチェックもしないで2chに貼り付けたりもする たとえそれが間違っていてもどうでもいいやという気分になる まとめると: おれは忙しいから 無駄なことに時間は使いたくない
249 名前:仕様書無しさん mailto:sage [2010/04/26(月) 05:26:25 ] >>246 mod 9 = 0 の場合に限れば、「全桁の数字を足すと9の倍数になる数は9の倍数」 っていう中学生でも知ってる話だぜ。
250 名前:仕様書無しさん mailto:sage [2010/04/26(月) 08:13:08 ] 言い訳にもなってねえ 流石屑ニート様
251 名前:革命家[uy] ◆rT33C51l9k mailto:sage [2010/05/01(土) 21:52:31 ] え・・・、って思った よほどのヴぁかか、全然初心者レベルだろお前
252 名前:仕様書無しさん mailto:sage [2010/05/02(日) 00:20:36 ] 頭大丈夫?
253 名前:革命家[uy] ◆e6.oHu1j.o mailto:sage [2010/05/04(火) 10:42:56 ] さっさと追いつけよのろま
254 名前:仕様書無しさん mailto:sage [2010/05/04(火) 13:54:14 ] 職歴なしニートにおいつくのはもう無理なんで。。
255 名前:仕様書無しさん mailto:sage [2010/05/07(金) 19:45:27 ] using System; public class FizzBuzzFormat : IFormatProvider, ICustomFormatter { private static char[] Z = new char[] {'Z'}; public object GetFormat(Type formatType) { return formatType == typeof(ICustomFormatter) ? this : null; } public string Format(string format, object arg, IFormatProvider provider) { if (format == null) return String.Format("{0}", arg); if (format.StartsWith("Z")) { int n = (int) arg; bool m3 = n % 3 == 0, m5 = n % 5 == 0; return m3 ? (m5 ? "FizzBuzz" : "Fizz") : (m5 ? "Buzz" : n.ToString()); } if (arg is IFormattable) return ((IFormattable)arg).ToString(format, provider); return arg.ToString(); } } public class FizzBuzz { static void Main() { var fbf = new FizzBuzzFormat(); for (var i = 1; i <= 100; i++) Console.WriteLine(String.Format(fbf, "{0:Z}", i)); } }
256 名前:仕様書無しさん [2010/05/23(日) 02:47:37 ] for i=1,100 do s ="" if( i % 3 == 0 )then s="Fizz" end if( i % 5 == 0 )then s=s.."Buzz" end if( s == "" )then s=i end print( s ) end 安直だなぁ、自分。
257 名前:仕様書無しさん [2010/05/23(日) 04:13:08 ] >>256 その方法が一番だよ シンプルイズベスト 業務のプログラムであんまり凝ったコード書かれると困る
258 名前:仕様書無しさん mailto:sage [2010/05/26(水) 18:28:21 ] 割り算や余剰を使うと計算コストが高い。 平凡にカウンタを使うほうが早い。 正しく解くだけじゃなくて高速性を考えないといけないのにわかってないアホ多すぎ
259 名前:仕様書無しさん [2010/05/26(水) 20:40:51 ] 確かにそうだけど 今の時代はI/O関係なければそんなに速度なんて変わらないから ぱっと見でわかりやすいほうがいいだろ いつの時代だよ
260 名前:仕様書無しさん [2010/05/26(水) 22:45:50 ] using System; class FizzBuzz { static void Main() { var a = new[] { new { Multiple = 3, Indication = "Fizz" }, new { Multiple = 5, Indication = "Buzz" } }; int[] c = new int[a.Length]; for (int i = 1; i <= 100; i++) { bool fb = false; for (int j = 0; j < a.Length; j++) { if (++c[j] == a[j].Multiple) { Console.Write(a[j].Indication); c[j] = 0; fb = true; } } Console.WriteLine(fb ? "" : i.ToString()); } } }
261 名前:仕様書無しさん mailto:sage [2010/05/27(木) 13:32:51 ] >>258 その労力は、検索アルゴリズムの選択とか、枝刈りとか、効果出やすい所につぎこめよw 値を記憶するのは、どうしようもなく高速化最優先の場合か、せいぜい、三角関数のテーブル化あたりだね。
262 名前:仕様書無しさん mailto:sage [2010/05/28(金) 02:01:12 ] Python、短絡評価とジェネレータ内包表記で。 def fizz(x): return x % 3 == 0 and 'Fizz' or '' def buzz(x): return x % 5 == 0 and 'Buzz' or '' def fizzbuzz(x): return ''.join((fizz(x), buzz(x))) or str(x) print '\n'.join(fizzbuzz(x) for x in xrange(1, 101))
263 名前:仕様書無しさん mailto:sage [2010/05/31(月) 13:22:37 ] Pythonでとりあえず標準的に書いてみる 見れば分かるとおり、無限ループするよ i=0 while True: print i, if i%3==0: print "Fizz", if i%5== 0: print "Buzz", print '\n' i=i+1
264 名前:仕様書無しさん mailto:sage [2010/05/31(月) 13:24:29 ] あれ?スペースが消えた あ、全角じゃないとだめなのか スレ汚ししてすいません
265 名前:仕様書無しさん mailto:sage [2010/05/31(月) 13:29:59 ] >>263-264 こう書きたかったんだろうけど、iの値が常に表示されてしまう i=0 while True: print i, if i%3==0: print "Fizz", if i%5== 0: print "Buzz", print '\n' i=i+1
266 名前:仕様書無しさん mailto:sage [2010/05/31(月) 13:31:13 ] [1から100まで]ってのは仕様だからそれを満たさないと失格だよぅ
267 名前:仕様書無しさん mailto:sage [2010/05/31(月) 13:38:35 ] すんません for i in range(1,100): if i%3==0: print("Fizz",end='') if i%5==0: print("Buzz",end='') print('\n') i=i+1 Python3で書き直し。
268 名前:仕様書無しさん mailto:sage [2010/06/01(火) 00:11:02 ] >>267 問題文を再確認して下さい。 時間がかかってもいいので、落ち着いて。 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …
269 名前:仕様書無しさん mailto:sage [2010/06/01(火) 00:26:53 ] #include <stdio.h> #include <stdlib.h> int fizzbuzz(int pos) { if (pos%15==0) { printf("振り出しに戻る\n"); return 1; } else if (pos%5==0) { printf("コンビニまでパシり\n"); } else if (pos%3==0) { printf("服を1枚脱ぐ\n"); } else { printf("%d\n",pos); } return pos; } int main(void) { int pos = 1, saikoro; randomize(); while (pos<100) { saikoro = rand() % 6 + 1; printf("現在位置%d-> %d が出ました\n",pos,saikoro); pos = fizzbuzz(pos+saikoro); } printf("ゴール"); return 0; }
270 名前:仕様書無しさん mailto:sage [2010/06/01(火) 23:40:39 ] for i in range(1,100): if i%3==0: print("Fizz",end='') if i%5==0: print("Buzz",end='') i=i+1 次はLuaでやろうかな
271 名前:仕様書無しさん mailto:sage [2010/06/01(火) 23:42:58 ] ミス for i in range(1,100): print(i,end=' ') if i%3==0: print("Fizz",end='') if i%5==0: print("Buzz",end='') print(' ') i=i+1 こうかな?
272 名前:仕様書無しさん mailto:sage [2010/06/02(水) 00:56:00 ] それも駄目です。
273 名前:仕様書無しさん [2010/06/02(水) 03:23:50 ] perl言語で $c = 0; while ($c < 100){ $c++; print $c . "\n"; if (($c % 3) == 0){print " fizz\n" } if (($c % 5) == 0){print " bizz\n" } }
274 名前:仕様書無しさん [2010/06/02(水) 03:36:33 ] アウトプットを修正 while ($c < 100){ $f = 0; $c++; unless (($c % 15) == 0 ){ if (($c % 3 ) == 0 ) {print "fizz\n"; $f = 1 } if (($c % 5 ) == 0 ) {print "buzz\n"; $f = 1 } }else { print "fizzbuzz\n"; $f = 1 } if ($f == 0 ) { print $c . "\n" } }
275 名前:仕様書無しさん [2010/06/02(水) 03:42:32 ] 274 2chの雑談程度で1分程度で書くとちょっと美しさにかけるな。 もう少し美しさを考えてみる
276 名前:仕様書無しさん mailto:sage [2010/06/02(水) 03:51:17 ] てーか>1読んでから書けよ馬鹿
277 名前:仕様書無しさん [2010/06/02(水) 03:58:46 ] >>276 何が間違ってる?1読んで正しい結果出てると思うんだけど。
278 名前:仕様書無しさん [2010/06/02(水) 04:01:21 ] 大文字の事? while ($c < 100){ $f = 0; $c++; unless (($c % 15) == 0 ){ if (($c % 3 ) == 0 ) {print "Fizz\n"; $f = 1 } if (($c % 5 ) == 0 ) {print "Buzz\n"; $f = 1 } }else { print "FizzBuzz\n"; $f = 1 } if ($f == 0 ) { print $c . "\n" } }
279 名前:仕様書無しさん mailto:sage [2010/06/02(水) 04:05:52 ] while ($c < 100){ $f = 0; $c++; if (($c % 3 ) == 0 ) {print "Fizz"; $f = 1 } if (($c % 5 ) == 0 ) {print "Buzz"; $f = 1 } if ($f == 0 ) { print $c } print "¥n" }
280 名前:仕様書無しさん [2010/06/02(水) 04:11:15 ] >>279 ちょっと綺麗に手直ししてくれてサンクス
281 名前:仕様書無しさん mailto:sage [2010/06/02(水) 05:21:20 ] #include<stdio.h> int main(void){ int i; for(i=1;i<=100;i++){ if(i%15 == 0){ printf("FizzBuzz "); } else if(i%3 == 0){ printf("Fizz "); } else if(i%5 == 0){ printf("Buzz "); } else{ printf("%d ",i); } } return 0; }
282 名前:仕様書無しさん [2010/06/02(水) 15:49:55 ] print" ",($_%3?"":"Fizz").($_%5?"":"Buzz")||$_ for 1..100 最短記録48byteとかどういうことなの…
283 名前:仕様書無しさん mailto:sage [2010/06/02(水) 16:33:50 ] while条件にi<100とか書いてる奴はクビ range(1,100)とか書いてる奴もクビ
284 名前:仕様書無しさん mailto:sage [2010/06/02(水) 16:53:53 ] ttp://golf.shinh.org/p.rb?FizzBuzz#ranking ここだな ちなみに2010/06/02現在だと、 GolfScriptの37文字が今のところ最短 Bashが意外に短くて43文字で二位 Perl6が44文字で三位 Perlが48文字で四位 z80マシンコードが49文字で五位
285 名前:仕様書無しさん mailto:sage [2010/06/02(水) 17:15:41 ] >>282 print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..100
286 名前:仕様書無しさん [2010/06/02(水) 17:48:41 ] >>284 それって、 1位 Bash, 2位 Perl(ver6), 3位 z80 (番外…GolfScript, HQ9F+) のような気がする。 COBOLが、Brainf*ckやWhitespaceのようなネタ言語より、更に下…。 まあ、出力結果の414バイトよりは、小さくなるけど。
287 名前:仕様書無しさん mailto:sage [2010/06/02(水) 17:56:24 ] …出力結果をlha圧縮したら、202バイトになった。 コマンド「lhasa a.lzh」と合わせても、213バイト。 つまり、出力結果>>>>>Esoteric(ネタ言語)>>>>>COBOL
288 名前:仕様書無しさん mailto:sage [2010/06/02(水) 18:59:05 ] いや、COBOLってもともと冗長なの目的な言語だし。 なにいってんのおまいら。
289 名前:仕様書無しさん mailto:sage [2010/06/02(水) 20:58:14 ] >>286 あくまでもここの仕様でのランキングだから、実質とか考える意味は無い 元々ここのランク対象外なHQ9F+を持ち出す意味も無い COBOLが冗長なのも当たり前っちゃ当たり前 Bashっつっても実質ほぼGNU sedだから環境依存だろとか、言い出したらきりがない
290 名前:仕様書無しさん mailto:sage [2010/06/02(水) 21:02:49 ] つーか言語の優劣ランキングと勘違いしてる奴が痛い
291 名前:仕様書無しさん mailto:sage [2010/06/03(木) 00:30:49 ] >>288 「おまいら」っていうか、俺一人。(286=287) この板、ID出ないんだね。 COBOLネタで釣れると思ったら、極めて常識的な意見ばかりで、がっかりだ。
292 名前:仕様書無しさん mailto:sage [2010/06/03(木) 01:24:07 ] 今さらCOBOLなんて知らない世代のほうが多いのかもよ