08/05/04 23:40:18
Buzz
51:仕様書無しさん
08/05/05 17:37:45
Fizz
52:仕様書無しさん
08/05/05 20:42:11
fiz
53:仕様書無しさん
08/05/05 22:37:47
ひさしぶりのPG
よい子が約1時間かかった...
public class FizzBuzz{
void fizzMsd(int max,int fizz,int buzz){
theLoop: for(int counter = 1; counter <= max; counter++){
if( ( (counter % fizz) == 0 ) & ( (counter % buzz) == 0 ) ){
System.out.println("FizzBuzz");
continue theLoop;
}
if( ( (counter % fizz) == 0 ) || ( (counter % buzz) == 0 ) ){
if( (counter % fizz) == 0 ){
System.out.println("Fizz");
} else if( (counter % buzz) == 0 ){
System.out.println("Buzz");
}
} else {
System.out.println(counter);
}
}
}
public static void main(String args[]){
FizzBuzz myFB = new FizzBuzz();
myFB.fizzMsd(100,3,5);
}
}
54:仕様書無しさん
08/05/05 23:41:08
X86アセンブラ、C、C++、Java、VB辺りが出たので他のないすかー?
ぴゅう太とかリアルで動かしてくれたら泣ける。
55:仕様書無しさん
08/05/05 23:42:56
>>54
ググレカス
56:仕様書無しさん
08/05/05 23:47:01
>>55
つってもCやVB系は書いたし他のメジャーなんも出たからさぁ。
変な奴こねえかなぁ。そういやDelphiねーな。
57:仕様書無しさん
08/05/06 00:12:55
<?php
for ($i=0 ; $i<100 ; $i++ ){
$a=$i;
if (!$i%3)$a.="fizz";
if (!$i%5)$a.="buzz";
echo $a;
}
?>
58:仕様書無しさん
08/05/06 00:46:19
>>57
for( $i = 1; $i <= 100; ... ) だな。
59:仕様書無しさん
08/05/06 04:48:24
かめさん=タートル!作る。
かめさん!ペンなし。
かめさん!100 0 位置。
かめさん!180度 向き。
かめさん!ペンあり。
時計=タイマー!作る。
時計!0.1秒 間隔。
時計!100回 回数。
文字を表示する部分=フィールド!作る -40 20 位置 80 40 大きさ。
時計!「|n|
表示する文字=””。
「n%3==0」!なら「表示する文字=”フィズ”」実行。
「n%5==0」!なら「表示する文字=表示する文字!”バズ”足す」実行。
「表示する文字==””」!なら「表示する文字=n」実行。
文字を表示する部分!(表示する文字)書く。
かめさん!(色!0 (n*2.5) (n*2.5) 作る)線の色。
かめさん!(100*cos(n*10)) (-100*sin(n*10)) 位置。
かめさん!(180-(n*10)) 向き。
」実行。
60:仕様書無しさん
08/05/06 06:44:30
10 FOR L=1 TO 100
20 D=0
30 IF L MOD 3=0 THEN PRINT "FIZZ"; : D=1
40 IF L MOD 5=0 THEN PRINT "BUZZ"; : D=1
50 IF D=1 THEN PRINT "" : GOTO 70
60 PRINT L
70 NEXT L
61:仕様書無しさん
08/05/06 06:54:09
10 C3=0: C5=0
20 FOR L=1 TO 100
30 C3=C3+1+3*(C3=2) : C5=C5+1+5*(C5=4)
40 IF C3=0 THEN PRINT "FIZZ";
50 IF C5=0 THEN PRINT "BUZZ";
60 IF C3*C5=0 THEN PRINT "" ELSE PRINT L
70 NEXT L
62:仕様書無しさん
08/05/06 08:40:48
>>57
常に数値が出るぞ。要件を良く見よう。
63:仕様書無しさん
08/05/06 09:30:12
でませんでした∧||∧
64:仕様書無しさん
08/05/06 09:32:46
やっぱでるな
65:仕様書無しさん
08/05/06 09:36:11
こうですかわかりません><
<?php
for ($i=1 ; $i<101 ; $i++ ){
$a="";
if (!$i%3)$a.="fizz";
if (!$i%5)$a.="buzz";
if ($a="")$a=$i;
echo $a;
}
?>
66:仕様書無しさん
08/05/06 09:39:04
$a=""
orz
67:仕様書無しさん
08/05/06 10:44:45
>>64
う、うん。それでいいよ。
俺が悪かったよ。
68:仕様書無しさん
08/05/06 11:03:37
LISP担当なにやってるの
69:仕様書無しさん
08/05/06 11:23:23
#!/usr/bin/perl
for ($i = 1; $i <= 100; $i++) {
print (!($i % 15) ? "FizzBuzz\n" :
!($i % 5) ? "Buzz\n" :
!($i % 3) ? "Fizz\n" : "$i\n");
}
print "PHPがバカにされる理由がわかった。\n";
70:仕様書無しさん
08/05/06 12:05:52
3が付く時だけFizzと言ってください
71:仕様書無しさん
08/05/06 12:38:34
「FizzBuzz問題」でググッたけど、どのブログも「この問題をどう解くか?」
という話になっていて、元の話の「プログラムを書けない奴をどうするか?」
と言う話はほとんど出てないのな。
日本じゃどの現場でも、プログラムが全く書けない奴を抱えて困った経験など、
してないんだろうか?
72:仕様書無しさん
08/05/06 13:14:23
>>71
うんそうだよw極例だが
部長は設計できない、実装できない、捏造完璧
課長は設計嘘っぽい、実装嘘っぽい、報告うまい
主任は実装できそう、設計できない、ごますりうまい
正社員は実装できそう、ごますりうまそう
派遣は実装できる、設計もできる
プログラムの書ける人が困るのが日本式だぜw
73:仕様書無しさん
08/05/06 13:29:31
>>71
書けない奴はこんな問題、
ある意味歯牙にもかけないだろ
74:仕様書無しさん
08/05/06 14:14:23
Lisp、つーかGauche
(use srfi-1)
(print (map
(lambda (x)
(cond
((= (remainder x 15) 0) "FizzBuzz")
((= (remainder x 3) 0) "Fizz")
((= (remainder x 5) 0) "Buzz")
(else x))) (iota 100 1)))
75:仕様書無しさん
08/05/06 17:43:07
haskell勉強してみたw
module Main where
main = do
putStrLn $ fizz_buzz [1..100]
fizz_buzz [] = []
fizz_buzz (x:xs) = fizz_buzz_chk x ++ "\n" ++ fizz_buzz xs
fizz_buzz_chk x | x `mod` 15 == 0 = "FizzBuzz"
| x `mod` 3 == 0 = "Fizz"
| x `mod` 5 == 0 = "Buzz"
| otherwise = show x
76:仕様書無しさん
08/05/06 17:53:58
76
77:仕様書無しさん
08/05/06 20:43:39
>>75
掲示板に投稿するとオフサイドルールが・・・
78:75
08/05/06 20:45:28
>>77にいじめられたぉ
助けてほしいぉ
79:可能な限り長く書いてみたw
08/05/06 22:13:02
//1/4
int func_fz(int int_st = 1,int_fn = 100){
if(int_st >= int_fn) return -1;
sz_buff = int_fn - int_st +2;
//文字列の配列を宣言
char* str_guard = "guard";
char** rly_fb = new(sz_buff);
(char** + sz_buff) = *guard;
//作業変数を宣言
char pt_st = rly_fb;
char pt_tgt = rly_fb;
char* str_fizz = "fizz";
char* str_buzz = "buzz";
char* str_none = "";
80:仕様書無しさん
08/05/06 22:13:43
//2/4
//表示する数字の変数
int tgt_num = int_st;
//変換メソッド
do{
bool b_fizz=false,b_buzz=false;
char* str_out = str_none;
if(tgt_num%3 == 0) b_fizz = true;
if(tgt_num%5 == 0) b_buzz = true;
if(!(b_fizz || b_buzz)){
char* str_out = ltoa(tgt_num);
str_fb = new(str_num);
str_fb = str_out;
}
81:仕様書無しさん
08/05/06 22:14:24
//3/4
else{
char* tmp_fizz = "\0";
char* tmp_buzz = "\0";
char* pt_out = str_out;
if(b_fizz) tmp_fizz = str_fizz;
if(b_buzz) tmp_buzz = str_buzz;
while(tmp_fizz != '\0'){
pt_out++ = tmp_fizz++;
}
while(tmp_buzz != '\0'){
pt_out++ = tmp_buzz++;
}
*pt_out = '\0';
*pt_tgt++ = pt_out;
82:仕様書無しさん
08/05/06 22:16:23
//4/4
}while(*pt_tgt != guard)
pt_tgt = pt_st;
//表示
do{
printf("\s\n"pt_tgt++);
}while(*pt_tgt != guard);
return 0;
}//環境無いからデバッグして無い。もしかしたら動くかも?
83:仕様書無しさん
08/05/06 22:39:11
# そんじゃ、pythonで
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print 'FizzBuzz'
elif i % 3 == 0:
print 'Fizz'
elif i % 5 == 0:
print 'Buzz'
else:
print i
84:仕様書無しさん
08/05/06 22:59:20
# rubyで
for i in 1..100
if i % 3 == 0 && i % 5 == 0
print("FizzBuzz\n")
elsif i % 3 == 0
print("Fizz\n")
elsif i % 5 == 0
print("Buzz\n")
else
print(i, "\n")
end
end
85:仕様書無しさん
08/05/07 01:49:10
void fizzbuzz(int num) {
if (num) {
fizzbuzz(num-1);
switch( (((num % 5) == 0) << 1) | ((num % 3) == 0) ) {
case 0: printf("%d\n", num); break;
case 1: printf("fizz\n"); break;
case 2: printf("buzz\n"); break;
case 3: printf("fizzbuzz\n"); break;
}
}
}
void main() { fizzbuzz(100); }
86:仕様書無しさん
08/05/07 04:44:01
#include <stdio.h>
int main(int argc,int argv) {
for (argc=1;argc<=100;argc++) {
switch(argv=argc%15) {
case 0:
case 3:
case 6:
case 9:
case 12:
printf("Fizz");
if (argv) break;
case 5:
case 10:
printf("Buzz");
break;
default:
printf("%d",argc);
break;
}
printf("¥n");
}
return (0);
}
87:仕様書無しさん
08/05/07 05:36:56
============================
俺用しおり
ここまで暗記
============================
88:仕様書無しさん
08/05/07 12:26:29
let rec fizzbuzz n =
let num = string_of_int n in
let fizz = if (n mod 3 = 0) then "Fizz" else "" in
let buzz = if (n mod 5 = 0) then "Buzz" else "" in
match n with
101-> ()
|_-> if (n mod 3 <> 0 ) then
if (n mod 5 <> 0) then
print_string num;
print_string fizz;
print_string buzz;
print_string "\n";
fizzbuzz (n+1)
in fizzbuzz 1
89:仕様書無しさん
08/05/07 18:02:17
コードを極限まで短くしたのを見てみたい。
言語はCで
90:仕様書無しさん
08/05/07 18:17:36
main(){int i;for(i=1;i<=100;i++)printf(i%3?i%5?"%d\n":"buzz\n":i%5?"fizz\n":"fizzbuzz\n",i);}
これ以上短くなるかな
91:仕様書無しさん
08/05/07 19:56:50
main(){inti;while(++i<101)printf(i%3?i%5?"%d¥n":"buzz¥n":i%5?"fizz¥n":"fizzbuzz¥n",i);}
92:仕様書無しさん
08/05/07 20:08:11
>>90
ワロタ
三項演算子は思いついたがそんな使い方があるとは
93:仕様書無しさん
08/05/07 21:28:49
int i;は外に出してグローバルにしないと初期値が不定になるぞ。
94:仕様書無しさん
08/05/07 21:33:35
パソコン買って半年の超初心者の俺が何故かこのスレに来ました。
ここにいる人達はどう考えても天才ですよね?
95:仕様書無しさん
08/05/07 23:09:24
>94
いいえ違います
ここにいる人達は毎日
おい○○、あれやっておけ
おい○○、明日までにデスマでこれデバレ
おい○○、パン買って来いあと報告書ここ修正
おい○○、出張いってこい
おい○○、よかったな某大手Nに売られるぞw
こんな感じで虐げられた下級民族以下の扱いを
毎日受けています
96:仕様書無しさん
08/05/07 23:41:04
超初心者がこんなスレにたどり着いた方法を知りたい
97:仕様書無しさん
08/05/08 21:24:17
酔った勢いでひまわり(日本語プログラミング言語)で書いてみた
答え=「」
足す数=0
100回(
足す数=足す数+1
一時3=足す数%3
もし、一時3=0 ならば、答え=答え&「FIZZ」
一時5=足す数%5
もし、一時5=0 ならば、答え=答え&「BUZZ」
もし、(一時3<>0)かつ(一時5<>0)ならば、答え=答え&足す数
答え=答え&「¥n」
)
答えと、表示。
分かりにくっ!
プログラムとしても日本語としても分かりにくっ!
なんかね、根っこがBASICで、それを日本語に訳しただけって感じがするよ、ひまわり。
コンピュータからして英語圏発祥だから仕方ないのかなあ。
98:仕様書無しさん
08/05/09 02:17:58
じゃLispで。
(defun fizzbuzz (n)
(labels ((rec (n acc)
(if (= n 0)
acc
(rec (1- n)
(cons
(or (fzchk n 15 "fizzbuzz")
(fzchk n 3 "fizz")
(fzchk n 5 "Buzz")
n)
acc)))))
(rec n nil)))
(defun fzchk (n x str)
(and (= (mod n x) 0) str))
99:仕様書無しさん
08/05/09 02:30:59
Pythonで。 ちょっとズルか?
for i in range(100):print i+1,i%3/2*"Fizz"+i%5/4*"Buzz"or-~i
100:仕様書無しさん
08/05/09 17:49:03
>>90
URLリンク(www.shinh.org)
73B まで縮むっぽいよ
101:仕様書無しさん
08/05/14 01:21:02
久しぶりにJavaでFizzBuzz問題のプログラムを書いてみたら、131バイトで書けた。
133バイトが最小だと思ってたけど、何か言語仕様変わったのかな。
試しにanarchy golfに登録してみたら、ちゃんと登録できたし
URLリンク(golf.shinh.org)
102:仕様書無しさん
08/05/14 23:06:37
main(i){
for(;i<101;puts(i++%5?"":"Buzz"))
printf(i%3?i%5?"%d":"":"Fizz",i);
}
103:仕様書無しさん
08/05/17 08:18:49
with sq as(
select rownum n
from dual
connect by
level<=100
)
select case
when mod(n,5)=0 and mod(n,3)=0
then 'FizzBuzz'
when mod(n,3)=0
then 'Fizz'
when mod(n,5)=0
then 'Buzz'
else to_char(n)
end
from sq
104:新入り
08/05/18 14:02:12
ここに神がいると聞き
URLリンク(www.nicovideo.jp)">【ニコニコ動画】ムービーメーカー編集後 aviutlにはいらない・・・
105:仕様書無しさん
08/05/19 00:42:20
プログラミングのジャンルと難易度(および Web プログラミング批判)
URLリンク(d.hatena.ne.jp)
106:仕様書無しさん
08/05/19 03:14:45
#include<stdio.h>
void main(i){for(i=1;i<101;){
if(i%5&&i%3)printf("%d",i);
printf(i%3?"":"Fizz");
printf(i++%5?"":"Buzz");
puts("");}}
俺の技量ではとても100Bytesは切れん。>>102が神すぐる。
>>90の73Bytesってのはどんなバケモノコードか見てみたいな。
107:106
08/05/19 03:15:40
>>90じゃなくて>>100だった。。
108:仕様書無しさん
08/05/22 22:57:06
main(a){
while(++a<100){
printf("\n%d\r",a);
if(!(a%3))printf("Fizz");
if(!(a%5))printf("Bizz");
}}
最初の改行が削れなかった。
109:仕様書無しさん
08/05/23 02:00:16
なんで未初期化のまま使ってるんだろうと思ってたが、
mainの第1引数であることに今さら気づいたorz
110:仕様書無しさん
08/05/23 08:30:46
111:仕様書無しさん
08/05/23 23:39:50
コードサイズよりバイナリサイズを削ろうよ
とか思う俺はKY?
112:仕様書無しさん
08/05/24 00:25:22
>>111
バイナリゴルフもやる人はやるみたい
あと、ちょっと違うかもだけど、例えばあなごるなら
URLリンク(golf.shinh.org)
URLリンク(golf.shinh.org)
こういうのもあるよ
113:仕様書無しさん
08/05/24 01:42:25
そういやJavaScript出てなくね?
<script type="text/javascript">
for(i = 1; i <=100; ++i)
{
if(i%3!=0 && i%5!=0) {
document.write(i);
} else {
if(i%3==0)
document.write("Fizz");
if(i%5==0)
document.write("Buzz");
}
document.write("<br>");
}
</script>
114:仕様書無しさん
08/05/24 12:38:59
main(i){while(i<101){printf("%d\r%s%s\n",i++,i%3?"":"Fizz",i%5?"":"Buzz");}}
115:仕様書無しさん
08/05/24 22:49:43
>>111
KYだなぁ。たぶんお前が思ってるよりずっと大きな意味で。
116:仕様書無しさん
08/05/24 23:57:45
main(i,j){printf(i%3*i%5?"%d\n":"%.*s\n",i%3*i%5?i:i%15?4:8,j+(i%3?4:0));if(i<100)main(i+1,"FizzBuzz");}
main(i,j){printf(i%3*i%5?"%d\n":"%.*s\n",i%3*i%5?i:i%15?4:8,j+(i%3?4:0));i<100?main(i+1,"FizzBuzz"):0;}
char *a="%d\0FizzBuzz\0Fizz";main(i){for(;i<101;i++)printf((i%15?i%3?i%5?0:7:12:3)+a,i),puts("");}
main(i,a){i<101?printf((i%15?i%3?i%5?"%d":a+4:a+9:a),i),puts(""),main(i+1,"FizzBuzz\0Fizz"):0;}
main(i,a){i<101?printf((i%15?i%3?i%5?"%d\n":a+10:a:a+6),i),main(i+1,"Fizz\n\0FizzBuzz\n"):0;}
main(i,j){if(i<101)printf(i%3?i%5?"%d":j:j+1,i),puts(i%5?"":j+6),main(i+1,"\0Fizz\0Buzz");}
main(i,j){i<101?printf(j%3?j%5?"%d":"":"Fizz",i)+puts(j%5?"":"Buzz"),main(i+1,(i+1)%15):0;}
char*a="\0Buzz\0Fizz";main(i){for(;i<101;puts(!(i++%5)+a))printf(i%3?i%5?"%d":a:a+6,i);}
main(i,j){if(i<101)printf(i++%3?j?"%d":"":"Fizz",i)+puts("\0Buzz"+!j),main(i,i%5);}
main(i,j){i<101?printf(i++%3?j?"%d":"":"Fizz",i)+puts("\0Buzz"+!j),main(i,i%5):0;}
main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3*i%5?"%d":i%3?"":"Fizz",i);}
main(i,j){for(;j=i%5,i<101;puts("Buzz"-!!j))printf(i++%3?j?"%d":"":"Fizz",i);}
main(i,j){for(;j=i%5,i<101;puts("Buzz"-!!j))printf(i++%3?j?"%d":0:"Fizz",i);}
main(i){for(;i<101;puts("\0Buzz"+!(i++%5)))printf(i%3?i%5?"%d":0:"Fizz",i);}
main(i){for(;i<101;puts("Buzz"-!!(i++%5)))printf(i%3?i%5?"%d":0:"Fizz",i);}
main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?i%5?"%d":"":"Fizz",i);}
main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?i%5?"%d":0:"Fizz",i);}
コンパイラ依存の力技含め色々やったが、どうしても74文字が限界。
73文字ってどうやるのだろう。。
117:仕様書無しさん
08/05/25 15:14:37
¥rを使うダーティーな奴がありなら、これでもいけたよ。
main(i){for(;i<101;puts(i++%5?"":"Buzz"))printf(i%3?"%d¥r":"Fizz",i);}
118:仕様書無しさん
08/05/26 23:16:29
>>115
K神奈川県
Y横浜市
119:仕様書無しさん
08/05/29 22:41:54
横須賀市ですね、わかります
120:仕様書無しさん
08/05/30 04:02:57
熊本県八代市のこともたまには思い出してあげてください。
121:仕様書無しさん
08/06/01 21:31:33
どう見ても京都府八幡市です。
本当にありがとうございました。
122:仕様書無しさん
08/06/02 00:04:09
京都といえば
八ツ橋だろ
123:仕様書無しさん
08/06/04 00:45:13
神戸の
洋館です
124:仕様書無しさん
08/06/06 13:27:46
腐れ
ヨーグルト
125:仕様書無しさん
08/06/06 14:57:11
後楽園
遊園地
126:仕様書無しさん
08/09/02 00:20:45
>>125
後楽園
遊園地で、ぼ
くとあくし
ゅ
127:仕様書無しさん
08/10/03 02:33:52
#include <iostream>
int main() {
for (int i = 1; i <= 100; i++) {
if ((i % 3 != 0) && (i % 5 != 0)) {
std::cout << i;
} else {
if (i % 3 == 0) std::cout << "Fizz";
if (i % 5 == 0) std::cout << "Buzz";
}
std::cout << std::endl;
}
}
128:仕様書無しさん
09/01/14 13:48:08
ほしゅ
129:仕様書無しさん
09/01/14 14:17:20
smalltalkキボソ
130:仕様書無しさん
09/01/14 20:29:34
>>10
とりあえず何も考えずに作ったなべあつ
#include<stdio.h>
int include3(int i){
int q,r;
q = i;
while(q > 0){
r = q % 10;
if(r == 3){return 1;}
q /= 10;
}
return 0;
}
int main(){
int i;
for(i = 1; i <= 40; ++i){
printf("%d",i);
if((i % 3 == 0) || include3(i)){printf("!");}
printf("\n");
}
return 0;
}
131:仕様書無しさん
09/01/14 21:50:52
#!/bin/bash
v=1
fz="Fizz"
bz="Buzz"
while [ $v -le 100 ];
do
d=""
three=`expr $v % 3`
five=`expr $v % 5`
if [ $three -eq 0 ]; then
d="$fz"
fi
if [ $five -eq 0 ]; then
d="$d$bz"
fi
if [ -z "$d" ]; then
echo "$v"
else
echo "$d"
fi
v=`expr $v + 1`
done
132:仕様書無しさん
09/01/15 21:50:07
Smalltalk
(1 to: 100) collect: [:n |
| out |
out := ''.
n \\ 3 = 0 ifTrue: [out := out, 'Fizz'].
n \\ 5 = 0 ifTrue: [out := out, 'Buzz'].
out isEmpty ifTrue: [out := n].
out
]
133:仕様書無しさん
09/01/19 10:19:53
J
wd&>((0 i.~15 3 5|]){((;;])'Fizz';'Buzz'),<)"0>:i.100
134:あぼーん
あぼーん
あぼーん
135:仕様書無しさん
09/01/19 23:08:51
>>134
こんな基地外、死ねばいいのに
URLリンク(d.hatena.ne.jp)
136:仕様書無しさん
09/01/20 09:58:08
まったくだ。死ねばいいのにね。
このコピペしてる莫迦。
137:仕様書無しさん
09/01/21 16:03:36
こんにちは、JONY.Cです。
最近夜遅くまでゲームしてしまい朝起きるのがつらいです。
夜更かしは美容と良い仕事の大敵なんでほどほどにしないと・・・。
さてさて本日からe-AMUSEMENT PASSメンバーズサイトでプレー画面のカスタマイズが、
そして携帯サイトでカスタマイズのレーンカバーが公開されました。
その中でも少々分かりにくい「THE TROOPER'S JOURNEY」の条件ですが・・・。
前回のヒントはわざとらしすぎて分かり易すぎるとチーム員からの指摘されたので
今回はプログラマらしく暗号で条件を公開したいと思います。
-----------------------
38 3B 33 08 36 25 32 36
08 39 22 3A 69 6A 62 77
18 05 77 38 3B 33 08 24
3F 38 27 08 39 22 3A 69
6A 64 67
key=0x57
-----------------------
上の暗号を解くと35文字の文字列になります。
その文字列が今回のレーンカバー「THE TROOPER'S JOURNEY」の出現条件のヒントになっています。
ということで時間がある方は暗号を解いてみてはどうでしょうか?
プログラマじゃないとなかなか解けない暗号かもです・・・・^^;
答え合わせは次の私のブログ当番の時に覚えていたら発表します。
・・・・とはいえ本来の目的である「THE TROOPER'S JOURNEY」の条件はうすうすばれているようですが・・・・。
138:仕様書無しさん
09/01/21 17:39:37
old_area_numって何?
139:仕様書無しさん
09/01/21 17:45:44
old_shop_numってなに?
140:仕様書無しさん
09/01/23 11:48:33
>>137
一緒に音ゲー板に帰るぞ
ていうかとっくに解析されてるのにいまさらマ板に持ってくるなよ
141:仕様書無しさん
09/01/23 12:26:53
「16進×35バイト」らしき元データが35文字になるとか
見え透いてる。
142:仕様書無しさん
09/01/24 19:39:37
#include<stdio.h>
template<int N, int N3, int N5> struct FizzBuzz;
template<int N3, int N5> struct FizzBuzz<101, N3, N5> {
static void f() {}
};
template<int N, int N3, int N5> struct FizzBuzz<N, N3, N5> {
static void f() { printf("%d\n", N); FizzBuzz<N+1, N3-1, N5-1>::f(); }
};
template<int N> struct FizzBuzz<N, 0, 0> {
static void f() { puts("FizzBuzz"); FizzBuzz<N+1, 2, 4>::f(); }
};
template<int N, int N5> struct FizzBuzz<N, 0, N5 > {
static void f() { puts("Fizz"); FizzBuzz<N+1, 2, N5-1>::f(); }
};
template<int N, int N3> struct FizzBuzz<N, N3, 0> {
static void f() { puts("Buzz"); FizzBuzz<N+1, N3-1, 4>::f(); }
};
int main() { FizzBuzz<1, 2, 4>::f(); return 0; }
143:仕様書無しさん
09/01/25 14:29:20
昨日、プログラムを始めた俺がチャレンジしたが、途中でよくわかなくなってしまった。
指摘とかしてもらえる?
<?php
for($a = 1; $a <= 100; $a++){
if(($a % 15)===0){
print "FizzBuzz";}
}elseif(($a % 3)===0){
print "Fizz";
}elseif(($a % 5)===0){
print "Buzz";}
}else{
print $a;}
{
?>
144:仕様書無しさん
09/01/25 15:03:33
if () {
print "...";}
}elseif
}が1つ余計じゃない?
145:仕様書無しさん
09/01/25 15:38:05
>>143
あからさまに括弧の対応が変。
最初からやり直せ。
146:仕様書無しさん
09/01/25 17:48:27
>>144
thx
>>145
そうします。。thx
147:仕様書無しさん
09/01/25 18:42:08
2chに書き込むときに消えただけかもしれないけど、
ちゃんとインデントして、括弧の位置をそろえると、
無駄な作業を減らせるよ
148:仕様書無しさん
09/01/25 23:02:54
viで%押せば済むだろ。
149:仕様書無しさん
09/01/26 09:51:37
>>148
150:仕様書無しさん
09/01/27 04:44:11
#/bin/sh
N=1
while [ $N -le 100 ]
do
R3=`expr $N % 3`
R5=`expr $N % 5`
if [ $R3 -eq 0 -a $R5 -eq 0 ]
then
echo FizzBuzz
elif [ $R3 -eq 0 ]
then
echo Fizz
elif [ $R5 -eq 0 ]
then
echo Buzz
else
echo $N
fi
N=`expr $N + 1`
done
151:仕様書無しさん
09/01/27 21:53:31
無駄なfork&exec大杉
152:仕様書無しさん
09/02/05 00:42:24
for(int i = 1, mod3 = 3, mod5 = 5; i <= 100; i++){
if(--mod3 == 0){ mod3 = 3; System.out.print("Fizz"); }
if(--mod5 == 0){ mod5 = 5; System.out.print("Buzz"); }
System.out.println(mod3 == 3 || mod5 == 5 ? "" : i);
}
153:仕様書無しさん
09/02/14 17:52:59
Pythonで、リスト内包表記を使う以外は割と素直にやってみる。
def fizzbuzz(n):
if n % 15 == 0: return 'FizzBuzz'
if n % 5 == 0: return 'Buzz'
if n % 3 == 0: return 'Fizz'
return n
for x in [fizzbuzz(n) for n in range(1,101)]:
print x
154:仕様書無しさん
09/03/09 22:16:08
// これ、もっと簡単になる?
using System;
using System.Linq;
class Program {
static void Main(string[] args) {
var n = from x in Enumerable.Range(1, 100) select new { Num = x, Print = "" };
var result = from p in n
join q in from x in n where x.Num % 3 == 0 select new { x.Num, Print = "Fizz" }
on p.Num equals q.Num into r
from s in r.DefaultIfEmpty(new { p.Num, Print = "" })
join t in from x in n where x.Num % 5 == 0 select new { x.Num, Print = "Buzz" }
on s.Num equals t.Num into u
from v in u.DefaultIfEmpty(new { s.Num, Print = "" })
select new { s.Num, Print = s.Print + v.Print }
into w select w.Print == "" ? w.Num.ToString() : w.Print;
foreach (var i in result)
Console.WriteLine(i);
}
}
155:仕様書無しさん
09/03/12 05:37:27
むしろ、よくそんな書き方が出来たなと言いたい
フツーに書いた方が簡単な希ガスw
156:うゆ ◆e6.oHu1j.o
09/03/13 20:49:29
Ozyでぐぐれかす
157:仕様書無しさん
09/03/13 23:16:03
失せろカス
158:仕様書無しさん
09/03/15 23:48:00
#! /usr/bin/perl
foreach(1..100){
print 'Fizz' if $_ % 3;
print 'Buzz' if $_ % 5;
print $_ unless $_ % 3 or $_ % 5;
print "\n";
}
恥ずかしいくらい単純すぎるかな…
159:仕様書無しさん
09/03/16 00:30:30
恥ずかしいくらい単純なミスしてた…orz
160:仕様書無しさん
09/03/16 07:37:32
三行以上のプログラムにはバグはつきものさ
161:仕様書無しさん
09/03/25 23:43:51
using System;
using System.Collections.Generic;
class Program {
[STAThread]
static void Main() {
const int max = 100;
var zz = new[] {
new KeyValuePair<int, string>(3, "Fizz"),
new KeyValuePair<int, string>(5, "Buzz")
};
for (var i = 1; i <= max; i++) {
var f = true;
for (var j = 0; j < zz.Length; j++) {
if (i % zz[j].Key == 0) {
Console.Write(zz[j].Value);
f = false;
}
}
if (f)
Console.Write(i);
Console.WriteLine();
}
}
}
162:仕様書無しさん
09/04/17 20:08:51
/* いまさらだけど、C言語でif無し */
#include <stdio.h>
void main(void){
int i ;
for(i=1 ; i<=100 ; i++){
((i%3)==0 && (printf("Fizz"),1)) + ((i%5==0) && (printf("Buzz"),1))!=0 || printf("%d", i) ;
printf("\n") ;
}
}
163:仕様書無しさん
09/04/25 01:04:12
#include<stdio.h>
void fizz(){static int i=1;if(i==0)printf("Fizz");i=(i+1)%3;}
void buzz(){static int i=1;if(i==0)printf("Buzz");i=(i+1)%5;}
void num() {static int i=1;if(i%3!=0&&i%5!=0)printf("%d",i);i++;}
void ret() {printf("\n");}
#define repeat10(x) x x x x x x x x x x
int main()
{
repeat10(repeat10(fizz();buzz();num();ret();));
}
164:仕様書無しさん
09/04/25 02:16:20
#include<stdio.h>
int i=1;
void fb(){printf("FizzBuzz\n");}
void f(){printf("Fizz\n");}
void b(){printf("Buzz\n");}
void n(){printf("%d\n",i);}
class f_list
{
public:
f_list *nxt;
void (*f)();
f_list(void (*x)()){nxt=NULL;f=x;}
f_list *next(){f();i++;return nxt;}
};
#define repeat10(x) x x x x x x x x x x
int main()
{
f_list *p;
f_list *s;
s=p= new f_list(n);p->nxt= new f_list(n);p=p->nxt;
p->nxt=new f_list(f);p=p->nxt;p->nxt=new f_list(n);p=p->nxt;
p->nxt=new f_list(b);p=p->nxt;p->nxt=new f_list(f);p=p->nxt;
p->nxt=new f_list(n);p=p->nxt;p->nxt=new f_list(n);p=p->nxt;
p->nxt=new f_list(f);p=p->nxt;p->nxt=new f_list(b);p=p->nxt;
p->nxt=new f_list(n);p=p->nxt;p->nxt=new f_list(n);p=p->nxt;
p->nxt=new f_list(f);p=p->nxt;p->nxt=new f_list(n);p=p->nxt;
p->nxt=new f_list(fb);p=p->nxt;p->nxt=s;
repeat10(repeat10(s=s->next();));
}
165:仕様書無しさん
09/04/25 06:37:45
15個並べたのか
166:164
09/04/25 07:30:10
FizzBuzzを実装できるほど優秀なプログラマであるお前らに聞きたいんだが、
最初はfb(),f(),b(),n()といった関数の戻り値を関数ポインタにして
関数自身に次の関数を返させることで循環リストを作るつもりだったんだ。
func_type f1(){ do_something;return f2;}
func_type f2(){ do_something;return f3;}
func_type f3(){ do_something;return f1;}
func_type fp=f1;
fp=fp();
fp=fp();
fp=fp();
...
でもfunc_typeをどう宣言していいかわからなかったのでf_listなんてクラスを導入せざるを得なかった。
func_typeはどうやって宣言すればいいの?そもそも無理なの?
167:仕様書無しさん
09/04/26 19:02:12
def Fizz(x):
return 'Fizz'
def Buzz(x):
return 'Buzz'
def FizzBuzz(x):
return 'FizzBuzz'
def N(x):
return x
print ','.join([str([FizzBuzz, N, N, Fizz, N, Buzz, Fizz, N, N, Fizz, Buzz, N, Fizz, N, N][i % 15](i)) for i in range(1,101)])
168:仕様書無しさん
09/04/26 19:17:12
あ~…投稿しておいてなんだけど、str()はN(x)の中に書いた方が良かったか。
ついでに読みやすく分解。
def Fizz(x):
return 'Fizz'
def Buzz(x):
return 'Buzz'
def FizzBuzz(x):
return 'FizzBuzz'
def N(x):
return str(x)
func_list = [FizzBuzz, N, N, Fizz, N, Buzz, Fizz, N, N, Fizz, Buzz, N, Fizz, N, N]
def mapfunc(i):
func = func_list[i % 15]
return func(i)
ary = map(mapfunc, range(1,101))
print ','.join(ary)
169:仕様書無しさん
09/04/26 22:49:00
%sed 's/ /\ /g' fizzbuzz.cs
using System;
class Program {
static void Main() {
for (int n = 1, c3 = 1, c5 = 1; n <= 100; n++, c3++,
c5++) {
bool fizz = c3 == 3;
bool buzz = c5 == 5;
if (fizz) {
Console.Write("Fizz");
c3 = 0;
}
if (buzz) {
Console.Write("Buzz");
c5 = 0;
}
if (! (fizz || buzz))
Console.Write(n);
Console.WriteLine();
}
}
}
170:仕様書無しさん
09/05/16 01:04:18
#include<stdio.h>
int main(void)
{
for(int i=1;i<=100;++i)
{
if(!(i%15))puts("Fizz Buzz");
else if(!(i%5))puts("Buzz");
else if(!(i%3))puts("Fizz");
else printf("%d\n",i);
}
return 0;
}
初心者がちょっとそれっぽく書いてみた
171:仕様書無しさん
09/05/16 22:57:37
>>170
それっぽくはあるけど、良いコードじゃないぞ
実装するなら、実装意図を明確にするべきで、
if (!(i%15))
この記述で無理矢理論理判断に持ち込むのは、良くない例
たしかにコレでも動くけども、
このコードでは 15で割ったあまりが ==0である、ことに意味がある
関数の戻りが0/1で戻ってくるから、それを論理判断にしているわけではない
そこをはき違えると、意図が不明確で、他人が読みづらいコードになる
172:仕様書無しさん
09/05/17 23:12:18
Cでは当たり前の記述だがな。
173:仕様書無しさん
09/05/17 23:32:19
XXでは当たり前、で思考停止してるから、糞コードが減らないんじゃね?w
174:仕様書無しさん
09/05/17 23:36:21
コードに15という定数を使っているのは今一
175:仕様書無しさん
09/05/18 21:52:46
#include<stdio.h>
int main(void)
{
for(int i=1;i<=100;++i)
{
if(i%3==0&&i%5==0)
puts("Fizz Buzz");
else if(i%5==0)
puts("Buzz");
else if(i%3==0)
puts("Fizz");
else
printf("%d",i);
}
}
初心者が意見を取り入れて普通に書いた
176:仕様書無しさん
09/05/20 20:57:48
#include<stdio.h>
#define FIZZ_MOD_NUMBER 3
#define BUZZ_MOD_NUMBER 5
#define IS_FIZZ_NUMBER(x) ((x)%FIZZ_MOD_NUMBER==0)
#define IS_BUZZ_NUMBER ((x)%BUZZ_MOD_NUMBER==0)
#define IS_FIZZ_BUZZ_NUMBER(x) (IS_FIZZ_NUMBER(x) && IS_BUZZ_NUMBER(x))
#define FIZZ_STRING "Fizz"
#define BUZZ_STRING "Buzz"
#define FIZZBUZZ_STRING FIZZ_STRING " " BUZZ_STRING
int main()
{
177:仕様書無しさん
09/05/20 20:59:00
途中で書き込んじまったorz
修正するのもメンドクサイから放置しよ。
178:仕様書無しさん
09/06/20 18:14:32
多分最速、既出?
#include <stdio.h>
void main(void)
{
int i=0,end=100;
for(;;){
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("Fizz\n"); //if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("Buzz\n"); //if(i==end)break;
i++; printf("Fizz\n"); //if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("Fizz\n"); //if(i==end)break;
i++; printf("Buzz\n"); if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("Fizz\n"); //if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("%d\n",i); //if(i==end)break;
i++; printf("FizzBuzz\n"); //if(i==end)break;
};
}
179:178
09/06/20 18:19:20
あー、
100個の結果をそのままprintfした方が早いか... orz
私がバカでした
180:仕様書無しさん
09/06/20 18:27:44
これ最強。
#include <stdio.h>
void main(void)
{
printf(
"1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,FizzBuzz,16,17,Fizz,19,Buzz,Fiz"
"z,22,23,Fizz,Buzz,26,Fizz,28,29,FizzBuzz,31,32,Fizz,34,Buzz,Fizz,37,38,Fizz,Buzz"
",41,Fizz,43,44,FizzBuzz,46,47,Fizz,49,Buzz,Fizz,52,53,Fizz,Buzz,56,Fizz,58,59,Fi"
"zzBuzz,61,62,Fizz,64,Buzz,Fizz,67,68,Fizz,Buzz,71,Fizz,73,74,FizzBuzz,76,77,Fizz"
",79,Buzz,Fizz,82,83,Fizz,Buzz,86,Fizz,88,89,FizzBuzz,91,92,Fizz,94,Buzz,Fizz,97,"
"98,Fizz,Buzz"
);
};
181:仕様書無しさん
09/07/11 07:42:40
main(i){for(;i<101;puts("Buzz"-i*i++%5))printf(i%3?i%5?"%d":0:"Fizz",i);}
182:仕様書無しさん
09/07/12 04:57:48
>void main(void)
ここで既に警告が出てるぞ。
183:仕様書無しさん
09/08/04 19:56:50
@echo off
setlocal
set A=0
:LOOP
if %A% EQU 100 goto :END
set /a A=A+1
set /a B=A%%3
set /a C=A%%5
set /a D=B+C
if %D% EQU 0 goto :FB
IF %B% EQU 0 goto :FIZZ
IF %C% EQU 0 goto :BUZZ
echo %A%
goto :LOOP
:FIZZ
echo Fizz
goto :LOOP
:BUZZ
echo Buzz
goto :LOOP
:FB
echo FizzBuzz
goto :LOOP
:END
endlocal
@echo on
184:183
09/08/04 20:03:18
>>183はDOS窓用バッチ
185:cobol
09/09/07 17:08:09
identification division.
program-id. fizzbuzz.
environment division.
data division.
working-storage section.
77 i pic 9(3).
77 a pic 99.
01 r3 pic 9.
88 r3-zero value zero.
01 r5 pic 9.
88 r5-zero value zero.
procedure division.
perform varying i from 1 by 1 until i > 100
perform fizzbuzz
end-perform.
stop run.
fizzbuzz.
divide
3 into i giving a remainder r3
end-divide
divide
5 into i giving a remainder r5
end-divide
if r3-zero and r5-zero then
display "FizzBuzz" upon console
else if r3-zero and not r5-zero then
display "Fizz" upon console
else if r5-zero and not r3-zero then
display "Buzz" upon console
else
display i upon console
end-if.
186:仕様書無しさん
09/09/08 00:03:08
無駄に長いなと思ったらCobolか...
187:仕様書無しさん
09/09/16 20:54:30
SQL見た時、なんか冗長だな~COBOLみて~、と思った。
188:仕様書無しさん
09/09/16 23:18:17
遊びがてら、出力が汚いのを作ってみた。後悔はしてない。(C言語)
(パターン1)
#include <stdio.h>
#include <memory.h>
int main(void)
{
int i = 0;
char buf[900+1];
char* ptr;
char* end = buf+900;
*end = '\0';
for (ptr=buf;ptr<end;ptr+=9) snprintf(ptr,9,"%6d \n",i++);
for (ptr=buf;ptr<end;ptr+=27) snprintf(ptr,6,"fizz ");
for (ptr=buf+4;ptr<end;ptr+=45) snprintf(ptr,4,"buzz");
printf(buf);
return 0;
}
189:仕様書無しさん
09/09/16 23:19:50
(パターン2)
#include <stdio.h>
#include <memory.h>
int main(void)
{
//fi zz bu zz _ 1 _ 2 _ fi zz _ 4 _ bu zz _ fi zz _ 7 _ 8 _ fi zz _ bu zz _ 11 _ fi zz _ 13 _ 14 _
char* a = "243410101241013412410101241341012410101";
char* b[5] = {"00","\r\n","fi","bu","zz"};
char* p = a;
while (b[0][0]<='9')
{
if (*p=='1')
{
b[0][0] += (b[0][1]-'0' + 1)/10;
b[0][1] = '0' + (b[0][1]-'0'+1) % 10;
}
printf(b[*p++-'0']);
if (!*p) p = a;
}
return 0;
}
190:仕様書無しさん
09/09/17 21:36:42
なんでこの問題が有名なのかイマイチわからんのだが、
重複さえ気をつければ他に別にひっかけがあるようなもんでは無いよね。
191:仕様書無しさん
09/09/17 22:03:23
引っかけがあるように見えるので、しばらく考えるが、
実は、引っかけがないことに気付く。
これが、最大の引っかけ。
192:仕様書無しさん
09/09/17 23:17:09
>>190-191
そもそもプログラマとしての素養を見るための問題の例として挙げられたものだから
引っかけとか特に必要ないんだよ
193:仕様書無しさん
09/09/18 23:12:18
普通のプログラマなら2分以内で書けて当たり前という程度には簡単。
194:仕様書無しさん
09/09/19 14:18:17
「2分」ってよく言われるけど、
「問題用紙をめくって下さい」から、「動作確認終わりました」まで、
必ずしも2分以内に終わらないよ。
特に、自分が普段はあまり使っていないような言語では。
問題文見て、面食らってる時間とか、
改行コードの出力、全パターンで共用した方がいいのかどうか思案する時間とか、
インクルード文なんだっけ、main関数の戻り値にvoid許可されてたっけとか、
Javaのクラスパスが通ってないとかw
2分以内と言ってる人は、何度も書いてるから、2分で出来るようになっただけ。
195:仕様書無しさん
09/09/19 14:31:04
んなこたーどうでもいいんだよ
196:仕様書無しさん
09/09/19 14:43:36
FizzBuzz
197:仕様書無しさん
09/09/19 14:45:47
195取られた
198:仕様書無しさん
09/09/20 15:04:59
>>194
ん?言語の指定はないんだが……
199:仕様書無しさん
09/09/20 20:44:10
>>194
FizzBuzzの2分は誤訳だってよ。
200:仕様書無しさん
09/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:仕様書無しさん
09/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:仕様書無しさん
09/09/21 11:41:01
>>192
プログラマの素養が関係ないような問題で素養を見ようとする意図って何なんだろうな。
結局、元のブログ主の?話題づくりに利用されているだけな気が知る
203:仕様書無しさん
09/09/21 12:19:30
元ネタ知らずにレスしてる香具師いたのか。
204:ぅゅ ◆e6.oHu1j.o
09/09/22 12:13:28
この問題って日本のものじゃないよね
海外っていうとレベル高そうにおもえるけど実はそうでもないんじゃ
205:仕様書無しさん
09/09/22 12:19:23
PowerShellバージョンが最強だな
206:仕様書無しさん
09/09/22 19:19:48
>>202
この問題すら解けない奴がいるって事なんじゃまいか?
207:仕様書無しさん
09/09/23 00:08:33
>>202
たとえ時間を充分にかけても正答にたどり着けないような人が
現実にはたくさん面接に来るんだよ
素養があるかどうかを見るんではなくて
素養がまるでない人をふるい落とすための簡易的な試験という位置づけ
208:仕様書無しさん
09/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:仕様書無しさん
09/09/24 12:59:58
>>203
>>1 のリンク先すら読まない莫迦が
そんだけ沢山いるってことでしょうな。
210:仕様書無しさん
09/09/24 16:41:34
スレタイ嫁、1嫁だけなら分かるけど、
1のリンク先まで必須となると、何か違うような気がする。
あと、何ていうか、「リンク先まで嫁」と、「2分以内」って、同じ部類のように思える。
自分の脳内ででっち上げた完璧さを、周囲の人に対して、期待している点において。
嫌味な言い方をすれば、配慮や謙虚さが足りないって言うか。
211:仕様書無しさん
09/09/25 03:28:04
それをたらたら書いてる時間でリンク先読むのは十分可能だよな?
元ネタは採用試験の話だ、くらいはFizzBuzzより簡単にわかるよな。
配慮や謙虚さが足りないって、むしろそっちじゃないのか。
嫌味な言い方だがな。
212:仕様書無しさん
09/09/25 15:11:26
情報の提示の仕方が悪い、
ボクちゃんは悪くない、おまえが悪い、おまえの教え方が悪い
というのは、典型的なゆとり脳の主張ですw
213:仕様書無しさん
09/10/19 21:26:19
出来るだけ短く
ここで一応動いたよ。→URLリンク(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:仕様書無しさん
09/10/19 22:09:10
これはコードゴルフじゃないんだぜ。
実行環境はなし。もしコンパイルが通らない、結果が間違っていたらその場で銃殺。
というシビアな条件で最も間違いにくいコードに最高得点をあげたい。
215:仕様書無しさん
09/10/19 22:28:45
その条件だと、HQ9F+で書くのが、最強か?
URLリンク(cfs.maxn.jp)
※元になったのはHQ9+という、ネタ言語。
Hと入力すれば、Hello worldを出力してくれる。
URLリンク(ja.wikipedia.org)
216:コード書き忘れた
09/10/19 22:30:41
++++++++++f
私の個人的な意見になるけど、
Fの一文字で、FizzBuzzを出力できるようにした方が、HQ9+っぽいと思うんだけどね。
217:仕様書無しさん
09/10/19 22:45:37
Cで書いたら緊張のあまりセミコロン忘れてあぼーんだなw
218:Go
09/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:仕様書無しさん
09/11/17 19:50:32
何度見ても気持ち悪い文法だなあ
220:仕様書無しさん
09/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
09/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:仕様書無しさん
10/04/21 22:59:37
剰余(割り算の余り)を出すのに演算子の % 以外で計算できますか?
% を忘れると大変だぞ!
223:仕様書無しさん
10/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:仕様書無しさん
10/04/22 00:07:26
向こうの子供はハッキングしまくりだってのにお前らときたら…
【調査】13歳までにハッキングをした経験した34%―米英の若者の実態調査(10/04/15)
スレリンク(pcnews板)
225:仕様書無しさん
10/04/22 02:12:40
>>221-223
うゆw問題からしてわかってねぇwwさすが天才www
"mes"w "kard"とおんなじwwメソッドwww
226:仕様書無しさん
10/04/23 00:56:20
>>225
223は動作は当たっているんじゃない。
% を使用しない方法ではこれでいいんじゃない?
227:仕様書無しさん
10/04/23 01:42:01
>>224
それってさ、漏れパスを使ったとか
正しい言い方忘れたが、「スクリプト使用のガキ」も含んででない?
228:仕様書無しさん
10/04/23 01:44:07
Script kiddie ?
229:仕様書無しさん
10/04/23 02:07:26
>>226
%を使う使わない以前に結果を他のコードと比べるくらいなぜできない?
数学のテストで「計算結果は違うけど式はあってますよね」とか言うクチか。
230:仕様書無しさん
10/04/23 02:59:12
%を忘れたwという変な条件を入れたとしても、
int reminder(int divisor, int dividend)
みたいな相当するメソッドを作るだろふつー。
直近の3と5の倍数を保持して商と比べるなんてせんでも。
void型のメソッドしか認めんwのなら別だけどさ。
231:仕様書無しさん
10/04/23 14:41:46
>>229
結果は当たっているよ。書き方の問題ね。
232:仕様書無しさん
10/04/23 14:57:18
>>1
>1から100までの数をプリントするプログラムを書け。
>ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
とあるのに3や5をプリントアウトしたらただの間違いだろ。
問題をちゃんと読んでねぇアホじゃねーか。
233:231
10/04/23 15:26:12
>>232
あー そこか
234:仕様書無しさん
10/04/24 03:25:23
223に感動した。
コード読んでも、何やってるのかワカランかったが、
int3, i/3, int5, i/5 の値を出力してみたら、発想の奇抜さにたまげた。
235:234
10/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:仕様書無しさん
10/04/24 03:35:25
訂正 ×233 ○223
あと、if ((i-1)/15!=i/15) でOKだ。
237:仕様書無しさん
10/04/24 03:59:03
iが正の整数なら剰余%は除数xについてi-(int(i/x)*x)なんだから当たり前じゃん。
%を忘れてどうこうってのがどうかしてる。馬鹿?
238:仕様書無しさん
10/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:仕様書無しさん
10/04/24 10:14:09
修正: "%i " → "%u "
240:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/04/24 22:55:00
>243
>15回に1回ごとに3と5の倍数が来ることを想定して配列に代入しているという
>理解でいいのかな。
全然違う。
関数compactが15で割った余りを(%演算子無しで)計算しているのがポイント。
下から4bitづつに区切って(まぁ上からでも同じだけど)、それを全部足したものと元の値では
15で割った余りが同じになることを利用している。
なぜそうなるかはちょっと頭をしぼって考えてみな
245:仕様書無しさん
10/04/24 23:07:38
10進数でmod 9が各桁の値の和に等しいってのと同じ話か。
16進数で考えてみようと思ったことが無かったぜ。
246:仕様書無しさん
10/04/24 23:53:32
明らかに%演算子より知名度低そうな知識だな…
247:243
10/04/25 09:43:48
>>244
違っていたか。しぼって考えてみます。
248:(u_・y) ◆e6.oHu1j.o
10/04/26 04:48:47
>>225
おれが過去にかいたコードを描いたときにかんがえてた事を
予想すると、お前のその意味不明なレスもなんとなくわかるよ
おれが適当に描いた部分は、 たとえ、プログラミング知らない奴でも修正できそうなレベルだ
っていうところまではわかるか??
だれにでも解ける場所とか、自分が過去に解いた場所は適当になる
それがuy。
その適当具合は、常軌を逸しているかもしれない
問題すら適当に読むか読まないし、コンパイルチェックもしないで2chに貼り付けたりもする
たとえそれが間違っていてもどうでもいいやという気分になる
まとめると:
おれは忙しいから
無駄なことに時間は使いたくない
249:仕様書無しさん
10/04/26 05:26:25
>>246
mod 9 = 0 の場合に限れば、「全桁の数字を足すと9の倍数になる数は9の倍数」
っていう中学生でも知ってる話だぜ。
250:仕様書無しさん
10/04/26 08:13:08
言い訳にもなってねえ
流石屑ニート様
251:革命家[uy] ◆rT33C51l9k
10/05/01 21:52:31
え・・・、って思った
よほどのヴぁかか、全然初心者レベルだろお前
252:仕様書無しさん
10/05/02 00:20:36
頭大丈夫?
253:革命家[uy] ◆e6.oHu1j.o
10/05/04 10:42:56
さっさと追いつけよのろま
254:仕様書無しさん
10/05/04 13:54:14
職歴なしニートにおいつくのはもう無理なんで。。
255:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/05/23 04:13:08
>>256
その方法が一番だよ
シンプルイズベスト
業務のプログラムであんまり凝ったコード書かれると困る
258:仕様書無しさん
10/05/26 18:28:21
割り算や余剰を使うと計算コストが高い。
平凡にカウンタを使うほうが早い。
正しく解くだけじゃなくて高速性を考えないといけないのにわかってないアホ多すぎ
259:仕様書無しさん
10/05/26 20:40:51
確かにそうだけど
今の時代はI/O関係なければそんなに速度なんて変わらないから
ぱっと見でわかりやすいほうがいいだろ
いつの時代だよ
260:仕様書無しさん
10/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:仕様書無しさん
10/05/27 13:32:51
>>258
その労力は、検索アルゴリズムの選択とか、枝刈りとか、効果出やすい所につぎこめよw
値を記憶するのは、どうしようもなく高速化最優先の場合か、せいぜい、三角関数のテーブル化あたりだね。
262:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/05/31 13:24:29
あれ?スペースが消えた
あ、全角じゃないとだめなのか
スレ汚ししてすいません
265:仕様書無しさん
10/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:仕様書無しさん
10/05/31 13:31:13
[1から100まで]ってのは仕様だからそれを満たさないと失格だよぅ
267:仕様書無しさん
10/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:仕様書無しさん
10/06/01 00:11:02
>>267
問題文を再確認して下さい。
時間がかかってもいいので、落ち着いて。
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz …
269:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/06/02 00:56:00
それも駄目です。
273:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/06/02 03:42:32
274
2chの雑談程度で1分程度で書くとちょっと美しさにかけるな。
もう少し美しさを考えてみる
276:仕様書無しさん
10/06/02 03:51:17
てーか>1読んでから書けよ馬鹿
277:仕様書無しさん
10/06/02 03:58:46
>>276
何が間違ってる?1読んで正しい結果出てると思うんだけど。
278:仕様書無しさん
10/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:仕様書無しさん
10/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:仕様書無しさん
10/06/02 04:11:15
>>279
ちょっと綺麗に手直ししてくれてサンクス
281:仕様書無しさん
10/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:仕様書無しさん
10/06/02 15:49:55
print"
",($_%3?"":"Fizz").($_%5?"":"Buzz")||$_ for 1..100
最短記録48byteとかどういうことなの…
283:仕様書無しさん
10/06/02 16:33:50
while条件にi<100とか書いてる奴はクビ
range(1,100)とか書いてる奴もクビ
284:仕様書無しさん
10/06/02 16:53:53
URLリンク(golf.shinh.org)
ここだな
ちなみに2010/06/02現在だと、
GolfScriptの37文字が今のところ最短
Bashが意外に短くて43文字で二位
Perl6が44文字で三位
Perlが48文字で四位
z80マシンコードが49文字で五位
285:仕様書無しさん
10/06/02 17:15:41
>>282
print+(Fizz)[$_%3].(Buzz)[$_%5]||$_,$/for 1..100
286:仕様書無しさん
10/06/02 17:48:41
>>284
それって、
1位 Bash, 2位 Perl(ver6), 3位 z80 (番外…GolfScript, HQ9F+)
のような気がする。
COBOLが、Brainf*ckやWhitespaceのようなネタ言語より、更に下…。
まあ、出力結果の414バイトよりは、小さくなるけど。
287:仕様書無しさん
10/06/02 17:56:24
…出力結果をlha圧縮したら、202バイトになった。
コマンド「lhasa a.lzh」と合わせても、213バイト。
つまり、出力結果>>>>>Esoteric(ネタ言語)>>>>>COBOL
288:仕様書無しさん
10/06/02 18:59:05
いや、COBOLってもともと冗長なの目的な言語だし。
なにいってんのおまいら。
289:仕様書無しさん
10/06/02 20:58:14
>>286
あくまでもここの仕様でのランキングだから、実質とか考える意味は無い
元々ここのランク対象外なHQ9F+を持ち出す意味も無い
COBOLが冗長なのも当たり前っちゃ当たり前
Bashっつっても実質ほぼGNU sedだから環境依存だろとか、言い出したらきりがない
290:仕様書無しさん
10/06/02 21:02:49
つーか言語の優劣ランキングと勘違いしてる奴が痛い
291:仕様書無しさん
10/06/03 00:30:49
>>288
「おまいら」っていうか、俺一人。(286=287)
この板、ID出ないんだね。
COBOLネタで釣れると思ったら、極めて常識的な意見ばかりで、がっかりだ。
292:仕様書無しさん
10/06/03 01:24:07
今さらCOBOLなんて知らない世代のほうが多いのかもよ
293:仕様書無しさん
10/06/03 02:05:48
「釣れると思ったら」は前置と後置で全く印象が変わるな
294:仕様書無しさん
10/06/03 20:45:17
ご迷惑おかけします、>>271です。
これでどうですか、ダメですか?
def fizzbuzz():
i=1
text=""
while i<=100:
if i%3==0:
text += "Fizz"
if i%5==0:
text += "Buzz"
if text=="":
yield i
else:
yield text
i+=1
text=""
for a in fizzbuzz():
print a,
295:仕様書無しさん
10/06/04 00:58:12
おめでとうございます
296:仕様書無しさん
10/06/04 02:11:38
ジェネレータとか使って関数分けてるのが半端に汎用的で無駄な気もするけど、似た戦略で書くなら、
def fizzbuzz(nums=range(1,101)):
for i in nums:
s = ""
if i % 3 == 0:
s += "Fizz"
if i % 5 == 0:
s += "Buzz"
yield i if s == "" else s
for s in fizzbuzz():
print s
こんな感じにするかなぁ俺だと。さらに悪乗りするなら、
def general_fizzbuzz(nums, *fv):
for i in nums:
s = ""
for f, v in fv:
if f(i):
s += v
yield str(i) if s == "" else s
def fizzbuzz(nums=range(1,101)):
return general_fizzbuzz(nums,
(lambda i: i % 3 == 0, "Fizz"),
(lambda i: i % 5 == 0, "Buzz"),
)
for s in fizzbuzz():
print s
297:仕様書無しさん
10/06/04 12:41:52
100が変動することも踏まえて定数にすべきだよな
298:仕様書無しさん
10/06/04 18:12:44
for s in fizzbuzz(itertools.count(-100000)):
print s
とかに変えたりな
299:仕様書無しさん
10/06/04 19:06:16
100は所詮デフォルトパラメータだから埋め込んでも問題なくね
300:仕様書無しさん
10/06/05 00:08:07
一方、Perlはやっぱりキチガイだった
URLリンク(d.hatena.ne.jp)
301:仕様書無しさん
10/06/06 01:21:02
for i in range(1,101):
script = i
if (i%3==0)and(i%5==0):
script = "FizzBuzz"
elif i%3==0:
script = "Fizz"
elif i%5==0:
script = "Buzz"
print script
302:仕様書無しさん
10/06/06 02:00:29
pythonはコピペに向かない
303:仕様書無しさん
10/06/06 23:43:14
プログラマーなら「 変換プログラム」作れるよな?
304:仕様書無しさん
10/06/06 23:53:17
>>303
単にスペース置き換えるだけですね?
305:仕様書無しさん
10/06/07 23:07:35
俺は超高度なセキュリティ対策用データコンバータープログラム作れるぜ。
これによってXSSという世界的脅威を打破できる。
306:仕様書無しさん
10/06/25 15:51:42
dc
[sg[]]sx1[ddd3%d[Fizz]r0<xnr5%d[Buzz]r0<xn*0=xpsg1+dd101>M]dsMx
307:仕様書無しさん
10/07/28 21:13:41
あー、Cって文字列直接入れられなかったんだorz。ずっとテスターでorz状態だ
c=1;
fcint=3;
bcint=5;
max = 100;
fc=fcint;
bc=bcint;
for (c=1; c>max; c++,fc--,bc--){
f = "";
b = "";
if (fc==1){
f = "fuzz";
fc = fcint;
}
if (bc==1){
b = "buzz";
bc = bcint;
}
if (f=="" && b==""){
printf(c)
}
else{
printf(f + b)
}
}
308:仕様書無しさん
10/07/28 23:27:57
これは酷い…。
309:仕様書無しさん
10/07/29 15:47:08
#include <stdio.h> //printf使うには、インクルード文が必要
#include <string.h>
int main(void) { //main関数が必要
int c=1; //型の宣言が必要
int fcint=3 - 1; //同上 + 下のほうでfc==0に書き換えた分、1をマイナス (※最初に表示する数が1だから)
int bcint=5 - 1; //同上 + 下のほうでbc==0に書き換えた分、1をマイナス
int max = 100; //同上
int fc=fcint; //同上
int bc=bcint; //同上
for (c=1; c<=max; c++,fc--,bc--){ // c<=maxにしないとループ回らないよ!!
char* f = ""; //型の宣言が必要(C++ならstring型を使うこと)
char* b = "";
if (fc==0){ //3つおきじゃなくて2つおきになってたよ!!
f = "fizz"; //fuzzじゃなくってfizz(笑)
fc = fcint + 1;
}
if (bc==0){ //5つおきじゃなくて4つおきになってたよ!!
b = "buzz";
bc = bcint + 1;
}
if (strcmp(f,"")==0 && strcmp(b,"")==0){ //ポインタと空文字列を比較しないこと(C++なら元のままでOK)
printf("%d",c); //数は直接printfできない
}
else{
printf(f); printf(b); //文字列型ではないので、足し算しないこと(C++なら元のままでOK)
}
printf("\n"); //できれば、改行すること
}
return 0; //main関数の戻り値
}
310:仕様書無しさん
10/07/29 15:52:42
ごめん、 fcint=3, bcint=5, fc=fcint-1, bc=bcint-1で、
ループ内が、fc=fcint, bc=bcintだね。
上のでも正常に動くけど。
311:307
10/07/29 19:09:51
>>309
わお。訂正していただけて、マジ参考になりますthx
つか俺は文法勉強しなおしだー・・・
312:仕様書無しさん
10/09/19 01:44:08
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5:"%d":0:"Fizz");}
313:仕様書無しさん
10/09/20 20:33:16
print 1
print 2
print Fizz
print 4
print Buzz
print Fizz
...
end.
314:仕様書無しさん
10/09/22 00:04:40
>>312
printfの引数、なにそれ?
315:仕様書無しさん
10/09/24 21:14:51
とりあえず動かして見ろ
316:仕様書無しさん
10/09/25 00:54:15
バグってるって話だろ。
main(i){for(;i-101;puts(i++%5?"":"Buzz")){printf(i%3?i%5?"%d":"Buzz":"Fizz",i);}}
317:仕様書無しさん
10/09/25 01:08:43
あ、いけね俺も失敗してら。結果は見た目正常風だとは思うが。
318:仕様書無しさん
10/10/22 13:04:46
FizzBuzzを極めてもう2年ほどたちます。
そろそろ採用してくれる会社を紹介してください。
319:仕様書無しさん
10/10/23 21:07:58
条件①
もっとも安く仕上げよ
条件②
運用コストは電源を入れてから1秒あたり1ドルかかる
システムは以下の性能
1. キー入力は1入力あたり1秒かかる
shiftキー等の押下・離放もカウントする
2. 文字入力は1文字あたり1ドルかかる
3. プログラム入力後、コンパイル・実行開始までの秒数はカウントしない
4. 実行は1行表示ごとに1秒かかる。表示した後同じ行に上書き表示
するようなものは、上書きの度に1秒かかる
5. 100行目(Buzz) 表示完了時までをコスト計算する
320:仕様書無しさん
10/10/23 23:07:51
Webプログラムじゃないのに{}を省略する理由はなんだろうか?
俺が昔読んだ本では{}は省略するなとあったけど
流行かな?
321:仕様書無しさん
10/10/23 23:43:24
>>319
条件が曖昧すぎて、パズルとして成り立ってないよ
プロ奴隷使えば安くなるんじゃねw
>>320
宗教論争
322:仕様書無しさん
10/10/24 10:36:38
たしかコンパイルしたら同じだから人間が読みやすいように
括弧でわかりやすく書くとあったけど。
そういう俺もめんどくさいとき括弧を省略するけど。
323:仕様書無しさん
11/01/02 07:37:02
Cのifとかの話なのかなぁ
LinuxカーネルやGnuみたいにメジャーなところでも、ifの{}は複文じゃなければ必ず
省略すること(ネストした時を除く)というルールを採用してる超大規模コードも
あるのよ
オフサイドルールで成り立っちゃってる言語もあるくらいだから、本当は言うほどの
危険は無いのかもしれん、と思うようになってからは、省略派に鞍替えしたというか、
元々省略してた(それでバグった記憶も無かった)ので省略派に戻ったというか
324:仕様書無しさん
11/01/14 20:35:03
迷路の最短経路を求める問題が、とあるブログで出題された
URLリンク(okajima.air-nifty.com)
人材獲得作戦・4 試験問題ほか
まともなプログラマーなら幅優先探索ぐらい知ってるから当然のことながら解くことが出来るよな
325:仕様書無しさん
11/01/18 02:22:56
↑「幅優先探索」とか、答え書かないでよ…。
でも、単純な幅優先なら、計算量爆発するよね。
25分~3時間か。FizzBuzz位ならともかく、やってらんない。ギブアップだわ。寝る。
326:325
11/01/18 02:37:27
ゴメン、枝切りすれば、それなりに実用的な速度にはなりそうではあるね。(全部スペースとかでない限り。)
まぁ、なんか面倒臭そうなので、プライド捨てるわ。
実行時間無視の書き捨てコードとかじゃ、ダメ扱いされそうだし。
327:325
11/01/18 03:48:46
大学は情報系でないので、力技。(全てのセルに、最初のポイントからの位置を書き込み。)
予想通り、デバッグで時間取られる。
そもそも、やる気ないから、コードは汚いし。
バカバカしくなってきたから、中断する。
「まともなプログラマーなら~」って言葉に、どうしても反応してしまう。
挑発に乗っちゃうクセを直さないとね。
328:325
11/01/18 03:54:46
何かイライラする。
さらっと数行で書けるものならともかく、意味の無いコード、1時間も書かされるとちょっと。
別に、芸のある出題でもないし。
スルーして、フリーソフトのメンテしとくんだったと後悔。
329:325
11/01/18 03:56:46
一応、Cで、セルに番号振るところまで書いた。
デバッグ含め、1時間半か。
ちょっと無能かもしれんが、馬鹿にするなら、馬鹿にしてくれ。
330:325
11/01/18 04:44:16
あ、出来た。
嫌々やるのやめて、コード整理したら、出来た。
100ステップって、ちょっと簡単に書き捨てられる量じゃない。
頭でアルゴリズム簡単に思いついても、デバッグに時間がかかるし。
「プログラマーなら出来なきゃ困る」なら、実際に書かなければならないんだから、時間のことも考えて欲しい。
あと、ブログで示されていたアルゴリズム、文系には辛いよ。
こっち系だとは思ったけど、昔、本で名前知った程度だから、ググルや参考書なしでは無理。力技しかなかった。
まあ、>>324は、スルー力検定だったのだなw
331:仕様書無しさん
11/01/18 12:40:58
リアル厨房の時に、マイクロマウスでやったな。
8bitマイコンでモータやらセンサやらの面倒を見つつ、
迷路脱出させてた。
出口が隅じゃなく、内部に有ると泣いたw
332:325
11/01/18 15:33:00
>>331
あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?
>>324の問題って、なんか、「求職者を見下したい」感がヒシヒシ伝わってきて嫌。
プログラムって、もっと、大らかに、何日もかけて、じっくり楽しむべきものなんだよね。
3時間とか、時間区切ってコーディングするのは、仕事でもない限り、邪道。
マイコンロボを試行錯誤して動かしたりとか、何日も考えてパズルの最適アルゴリズムを見出したりとか。
333:仕様書無しさん
11/01/18 20:42:37
>あれって、総当り方式じゃん。左側か右側かの壁伝ってくんだっけ?
だから、それだと出口が内部に有ると駄目だし、ループしてる柱みたいな
場所が有ると永久ループ。
一応、自分が通った経路を記憶しておいてマッピングしながら移動する
のだが、タイヤのスリップとかセンサの誤検知とか有るので、信頼度の
重み付けしながらファジーにマッピングして行く。
汚部屋と言う名の迷路を掃除するロボット、ルンバも作れなさそうだな。
中国製ランダムウォークのパチ物に負けるぞ。
334:仕様書無しさん
11/02/06 02:07:41
>>324
ためしにやってみた
スレリンク(tech板:294番)
>>325->>330
きにすんな
幅優先探索という言葉は知っていてもロジックを忘れてしまったから
解くのに3時間ぐらいかかった
ところで何のフリーソフト作ってる?
すごく気になるから教えて
使ってみたい
335:仕様書無しさん
11/02/08 23:42:25
>>325
幅優先探索の場合、計算時間より計算空間の方が先に破綻するんじゃ
ないかな。特にRAMの容量に限りの有る組込み制御の場合。
8bit時代は、オセロとか将棋も深さ優先探索してた。例外は森田和郎
ぐらいで、これもSSS*探索とαβ探索のハイブリッド。
336:仕様書無しさん
11/03/07 11:10:02.94
なつかしい話題発見。
全セル分のワークと若干のキューが確保できればいいんだから
そんなにメモリ圧迫するってほどでもないような。
といっても対象フィールドの広さにもよるだろうが、
例の出題程度の広さだったら破綻の心配はまずしなくていいでしょう。
各セルごとにゴール、スタート、障害物、未踏地、
既に歩いた地(「来た方向」の保持兼用)の区別がつけばいいので
ワークは各セルごとに1バイト(最低4ビット)あれば十分足りるし。
でも深さ優先探索しか知らなかった(書いたことがなかった)ので
試しに解いてみた時にはちょっと手こずってしまった。
ちなみに件の例題では深さ優先探索でも実用時間内に解けてしまう。
これって結構ワナかもな、と思った。
337:仕様書無しさん
11/03/18 10:49:36.47
空気読まずにCLOSでfizzbuzz,
(defgeneric fbzz (%3 %5 n)
(:method (%3 %5 n) (print n))
(:method ((%3 fixnum) %5 n) (print 'fizz))
(:method (%3 (%5 fixnum) n) (print 'buzz))
(:method ((%3 fixnum) (%5 fixnum) n) (print 'fizzbuzz)))
(defun fizz-buzz (n) (fbzz (/ n 3) (/ n 5) n))
(loop for i from 1 to 100 do (fizz-buzz i))
338:プログラマ志望の経済学部4年生
11/06/10 16:54:07.54
プログラミング始めて3週間です、どうですか?
#include <stdio.h>
int main(void)
{
int a;
for (a = 1; a <= 100; a++)
{
if (a % 3 == 0 && a % 5 == 0)
printf ("FizzBuzz\n");
else if (a % 3 == 0)
printf("Fizz\n");
else if (a % 5 == 0)
printf("Buzz\n");
else
printf("%d\n", a);
}
return 0;
}
339:仕様書無しさん
11/06/11 00:06:20.06
どうですかって言われても
まぁいいんじゃね
あえて言えば平凡すぎて面白みがなくてつまらん
340:仕様書無しさん
11/06/11 03:43:41.34
いい機会なんで?演算子を使ってみよう
341:仕様書無しさん
11/06/11 10:56:59.64
まいど = まいど?まいどぉ:まいどぅ
342:仕様書無しさん
11/06/11 11:19:06.80
こうかな
int main(void){
char *s[4] = { " ","Fizz","Buzz","FizzBuzz"};
int i;
for (i=1;1<=100;i++){
sprintf(s[0],"%d",i)
puts(s[(i%5==0)<<1+(i%3==0)]);
}
}
確認してないからわからんがかなり速の筈
sprintf部分を自分で書けばもっと速くなる
343:仕様書無しさん
11/06/11 11:31:36.95
こうすればもっと早いな
int main(void){
char *s[4] = { " ","Fizz","Buzz","FizzBuzz"};
int i, j;
for (i=1;1<=100;i++){
j=(i%5==0)<<1+(i%3==0);
if(j==0)
sprintf(s[0],"%d",i);
puts(s[j]);
}
}
344:仕様書無しさん
11/06/11 17:32:44.94
無限ループするじゃん。
345:仕様書無しさん
11/06/11 18:10:12.16
1<=100はともかく、<<演算子の優先順位が+より低いのにハマってるよ。
*2にしても多分同じオブジェクトが出るとは思うけどね。
↓結果
int main(void){
char *s[4] = { " %d¥n","Fizz¥n","Buzz¥n","FizzBuzz¥n"};
int i;
for (i=1;i<=100;i++)printf(s[(!(i%5)<<1)+!(i%3)],i);
}
346:仕様書無しさん
11/06/11 21:04:59.44
確認してないからわからんがかなり速の筈
347:仕様書無しさん
11/06/11 21:07:23.93
Link: URLリンク(codepad.org)
int main(void){
char *s[4] = { " ","Fizz","Buzz","FizzBuzz"};
int i;
for (i=1;1<=100;i++){
sprintf(s[0],"%d",i)
puts(s[(i%5==0)<<1+(i%3==0)]);
}
}
In function 'main':
Line 6: error: expected ';' before 'puts'
348:仕様書無しさん
11/06/11 21:09:13.71
Link: URLリンク(codepad.org)
int main(void){
char *s[4] = { " ","Fizz","Buzz","FizzBuzz"};
int i, j;
for (i=1;1<=100;i++){
j=(i%5==0)<<1+(i%3==0);
if(j==0)
sprintf(s[0],"%d",i);
puts(s[j]);
}
}
Output:
Segmentation fault
349:仕様書無しさん
11/06/12 02:55:39.33
FizzBuzzはできて当たり前、がんばるもんじゃないんだけどな。
「どうだっ」みたいな人が会社にいて困った。
350:仕様書無しさん
11/06/12 12:27:40.95
int main(void){
char *p, c[] = " ";
char *s[] = { "","Fizz","Buzz","FizzBuzz"};
int i, j, k;
s[0] = c;
for (i=1;i<=100;i++){
j = ((i%5 == 0)<<1) + (i%3 == 0);
if(j==0) {
p = c;
k = i;
if(k >= 100) {
*p++ =k/100 +'0';
k =k%100;
}
if(k >= 10) {
*p++ =k/10 +'0';
k =k%10;
}
*p++ =k +'0';
*p = NULL;
}
puts(s[j]);
}
return 0;
}
動くようにするとこうだな
sprintfはよくわからんのではずしたわ
351:仕様書無しさん
11/06/12 18:18:48.82
平凡
use strict ;
my $m3 = 3 ;
my $m5 = 5 ;
for( my $n = 1 ; $n <= 100 ; ++$n ) {
if( $m3 == $n ) {
$m3 += 3 ;
if( $m5 == $n ) {
$m5 += 5 ;
print STDOUT "FizzBuzz\n" ;
} else {
print STDOUT "Fizz\n" ;
}
next ;
}
if( $m5 == $n ) {
$m5 += 5 ;
print STDOUT "Buzz\n" ;
next ;
}
print STDOUT $n, "\n" ;
}
exit(0) ;
__END__
352:仕様書無しさん
11/06/13 23:12:21.79
1.可変性
このプログラムが実用になった場合、標準出力以外のものに出すよう変更の必要があると思われるが、簡単にできるよう考慮されているか
倍数が3のみで5なしになったら?逆に両方残したまま7が増えたら?条件変わってもすぐに変更できるか
2.動作速度
十分速いかあるいは速度アップの必要が生じた場合、どこをいじればよいか?具体的に内部でどういう動作が 行われているかわかっているか
等をワシなら気にするな
最初黙っててできた後から上記のような質問してもすぐに対応したら、かなりできる奴だと思うわ
353:仕様書無しさん
11/06/14 01:46:04.12
いや、そもそも「かなりできる」奴か見るためのテストじゃないし。
がんばるもんじゃないったらスレ終わりじゃん。ここマ板だし。
こんな書き方もある、ってお遊びだよ?言わせんな恥ずかしいw
354:仕様書無しさん
11/06/15 00:34:09.43
♪フィズバズフィズバズよよいがよい
♪フィズバズフィズバズどどんがどん
♪三の倍数の時はフィズ
♪五の倍数の時はバズ
♪三と五の三と五の
♪公倍数ではフィズバズ印字
♪フィズバズ音頭でどどんがどん
そこのズブズブの日本人のあなた
自然にメロディが浮かんで来たでしょ
355:uy ◆yyC0rYWEq2
11/06/16 22:02:56.19
メタでかけよ
356:仕様書無しさん
11/06/17 00:03:58.61
>>355
お手本プリーズ
357:仕様書無しさん
11/06/17 10:22:50.20
メタと付く言語はMLとmetafontしか知らんな…
358:仕様書無しさん
11/06/17 16:55:18.24
メタで書けば3や5プリントしてもいいのかw
359:仕様書無しさん
11/07/07 21:47:26.61
haskellとcで!!と思ったら、すでに書かれてた。。。Orz
haskellの内包表記で書けないか考えてみる
360:仕様書無しさん
11/07/08 12:32:30.06
using System;
class FizzBuzz
{
static void Main()
{
for (var n = 1; n <= 100; n++) {
var f = (n % 3 == 0 ? "Fizz" : "")
+ (n % 5 == 0 ? "Buzz" : "");
Console.WriteLine(f == "" ? "{0}" : f, n);
}
}
}
361:仕様書無しさん
11/07/08 20:37:40.13
これがどう問題なのか
誰か詳しく教えてくれ
913 :名無しさん@12周年 :sage :2011/07/02(土) 21:53:57.61 ID:vEYqWa5o0
>>871
アメリカで例えると
オバマ大統領がアルカイダにいる、ビンラディンの家族に資金援助していたという事で騒ぎになってる。
オバマがこっそり9.11実行犯の釈放嘆願書に署名
↓
オバマ「私ははめられた!!うっかり署名してしまった! 私は卑怯で残忍なテロリストを絶対許さない!!」
↓
オバマはイスラム原理主義の団体から多額の寄付を受け取っていた←追加分
↓
オバマがこっそりビンラディンの家族に毎年、計6250万円献金
↓
クリントンもこっそりビンラディンの家族に1000万円献金 ←ここが鳩山分★
↓
アメリカのメディアは全く報じず
ねーよwww
362:仕様書無しさん
11/07/17 17:04:57.69
repeat 99
mes n+cnt
if n\15=0 : mes "FizzBuzz": else {
if n\3=0 : mes "Fizz"
if n\5=0 : mes "Buzz"
}
loop
;未RUN
363:仕様書無しさん
11/07/21 01:29:31.99
ホットスーププロセッサなら
for n,1,100:s="":if n\3=0{s="Fizz"}if n\5=0{s+"Buzz"}if s=""{s=n}mes s:next
364:仕様書無しさん
11/07/21 12:30:50.58
using System;
class FizzBuzz
{
static void Main()
{
int m3 = 0, m5 = 0;
for (int i = 1; i <= 100; i++) {
if (++m3 == 3) {
Console.Write("Fizz");
m3 = 0;
}
if (++m5 == 5) {
Console.Write("Buzz");
m5 = 0;
}
if (m3 != 0 && m5 != 0)
Console.WriteLine(i);
else
Console.WriteLine();
}
}
}
365:362
11/07/21 23:31:27.81
>>363
そんなかんたんにいくのね・・・
366:仕様書無しさん
11/08/01 10:21:21.51
クソコードを書きたくなったから書いてみる
print ':'.join('FizzBuzz' if n % 15 == 0 else 'Fizz' if n % 3 == 0 else 'Buzz' if n % 5 == 0 else str(n) for n in xrange(1, 101))
367:仕様書無しさん
11/08/01 10:23:28.39
\nに直すの忘れてたが多分どうでもいいな
368:仕様書無しさん
11/08/07 04:17:05.04
#include <stdio.h>
main(void){
int i = 0,flag = 0;
while(i < 101){
if(i % 3 == 0){
printf("Fizz");
flag = 1;
}
if(i % 5 == 0){
printf("Buzz");
flag = 1;
}
if(flag == 1){
printf("%d\n",i);
}else{
printf("\n");
}
flag = 0;
i ++;
}
}
完全独学+初心者+ゲームしか作った事ねぇ・・・
俺ダメダメかのぉ?orz
369:仕様書無しさん
11/08/07 04:20:51.13
見返したら色々間違えてる。なんかカオス。
俺赤面。こんな時間に眠い目こするからいけなかったんだ(言い訳
もう寝る。お休み
370:仕様書無しさん
11/08/07 07:29:01.96
本物のマなら、寝ずにデバッグする。
371:仕様書無しさん
11/08/07 17:07:39.64
真のマなら、寝て起きてからデバッグする。
372:仕様書無しさん
11/08/07 18:05:59.34
>>371
それは正しい
373:仕様書無しさん
11/08/07 18:50:41.19
俺ぐらいになると寝てる間にデバッグするね
374:仕様書無しさん
11/08/07 20:10:30.23
>>368
関数の型をうろ覚えで済ますな、ぐぐれ
ループの範囲が1から100までなんだから、素直に1と100をコードに入れられるならそうした方が見やすい
つーかループ変数の初期化とか更新とかはforを使えばもっと見やすいし、見やすければバグりにくい
最近のC/C++のforならスコープも付くしな
375:仕様書無しさん
11/08/25 17:49:38.05
>>352
#include <stdio.h>
int disp(int num, int flag, int sizeofarray, char *s[] ) {
if (flag == sizeofarray-1)
printf("%d\n", num) ;
else
printf("%s\n",s[flag]) ;
return 0;
}
376:仕様書無しさん
11/08/25 17:52:39.16
(続き)
int main(void) {
int num1 = 1 ;
int num2 = 100 ;
int sizeofarray = 4 ;
int a[] = {15,5,3,1} ;
char *s[] = { "FizzBuzz","Buzz","Fizz"," "};
int i,j ;
for (i = num1 ; i <= num2 ; i++) {
for (j = 0 ; j < sizeofarray ; j++){
if (i % a[j] == 0 ) {
break ;
}
}
disp(i,j,sizeofarray,*s[]) ;
}
return 0;
}
377:仕様書無しさん
11/08/25 17:58:22.94
>>352
1 可変性
標準出力以外に出力する必要が生じたときは、disp()を修正する。
また、項目を追加する必要が生じたときは、変数の初期値を変える。
2 実行速度
可変性を重視すると、その分実行速度が落ちる。
378:仕様書無しさん
11/08/25 19:01:16.31
>>375-376まで行くと、可変性を無駄に重視しすぎだろ
要求が変更されたら、コードを書き換えて対応するのは当たり前なんだから、ほどほどに書き換えが
やりやすくなってりゃいいのよ
実行効率どころか可読性まで大きく落として、まだ見ぬ要求変更の可能性に幅広く対応するのは無駄
379:仕様書無しさん
11/08/26 15:09:14.82
ユーザー様から、仕様の大幅変更の要求が来た。
3で割り切れたときはFizz、5で割り切れたときはBuzz、
3と5で割り切れたときはFizzBuzzでいいんだけど、
それに加えて、7のときはGizz、13のときはKizz、
3と7のときはFizzGizz、3と13のときはFizzKizz、
5と7のときはBuzzGizz、5と13のときはBuzzKizz、
7と13のときはGizzKizzだ。
それから、計算の範囲は、1から100ではなく、100から1000までね。
修正作業をすぐにやってくれ。締め切りは明日ね。
380:仕様書無しさん
11/08/26 15:17:48.71
int num1 = 100 ;
int num2 = 1000 ;
int sizeofarray = 11 ;
int a[] = {91,65,39,35,21,15,13,7,5,3,1} ;
char *s[] = { "GizzKizz","BuzzKizz","FizzKizz","BuzzGizz","FizzGizz","FizzBuzz","Kizz","Gizz","Buzz","Fizz"," "};
よかった。
実行効率どころか可読性まで大きく犠牲にして、
まだ見ぬ要求変更の可能性に幅広く対応したコードを書いておいて…
381:仕様書無しさん
11/08/26 17:24:33.68
そんなピンポイントな仕変出す客おるかいw
382:仕様書無しさん
11/08/26 17:42:45.50
105(3,5,7で割れる)とかどうするんだろ、って思ったけどたぶんBuzzGizzなんだろうなぁ
直接"FizzBuzz"とか書かず、割れた数から出力すれば楽だと思ったんだが、そうするとFizzBuzzGizzになっちゃうんだよなぁ
Fizz,Buzz,…の数だけフラグ用意して、立てたり立てなかったりしつつ、その後3本以上になったら小さいほうを折って…って面倒だわ
383:仕様書無しさん
11/08/26 19:36:59.46
その前にギャラの話をしようじゃないか…
384:仕様書無しさん
11/08/26 21:33:38.93
つーかその程度の変更なら、丸々書き換えても30分も要らんだろw
385:仕様書無しさん
11/08/27 00:02:00.57
面倒なだけで興味をひかないネタだな
こういうところにもその人のスキルって出るよな
よって>>379は低スキルのバカグラマー
386:仕様書無しさん
11/08/27 02:50:52.15
明らかに>>375-376に都合のいいように考えただけの仕様だもんな
387:仕様書無しさん
11/08/27 02:55:14.40
3で割り切れる時は3倍、5で割り切れる時は5倍にして表示してね、という簡単な変更要求が来た途端、
可変性が高いつもりでただ重いだけの無駄コードと化すしな