2007-05-10

こないだマシン語ーとか言ってた人ですが。

皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。

さて、古臭いCPUを考慮してこんな感じのロジックを考えた。

これをニモニック言語に置き換えていくのは簡単だと思う。言語適当だけど読めるでしょ。

$c=1;
$c3=3;
$c5=5;
{
    $c3--;
    $c5--;
    if (($c3 && $c5)==0) {
        if ($c3 == 0) { print "Fizz"; $c3=3; }
        if ($c5 == 0) { print "Buzz"; $c5=5; }
        }
    else { print $c; }
    if (($c-100) == 0) { exit; }
    $c++;
} while(1)

何度も直していたら自分の能力に対する自信をなくしてきたorz 本職じゃなくてよかったぜ。

0判定にこだわっているのは、フラグが立つから(分かる人には分かる)。

どうでもいいけど、PHPperlを使っていると、どっちがelsifでどっちがelseifか忘れません?

http://anond.hatelabo.jp/20070508170219トラバ

記事への反応 -
  • 1から100までの整数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリン...

    • 皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。 さて、乗算除算の負担すらバカにならん古臭いCPUを考慮し、こんな感じのロジックを考え...

      • http://anond.hatelabo.jp/20070510171746 http://anond.hatelabo.jp/20070510170511 ちゃんとツリーに表示されるように始点へリンクを張ってくれ 始点: http://anond.hatelabo.jp/20070508170219

      • http://anond.hatelabo.jp/20070510170511 皆素直に繰り返しの構文で1から100まで回してんのね(違うのがあったら面白いかなと思った)。 そうか、せっかくExcelなんだからループいらないじゃん。 ...

        • =IF(MOD(ROW(),3),IF(MOD(ROW(),5),ROW(),"Buzz"),IF(MOD(ROW(),5),"Fizz","FizzBuzz"))

        • 剰余不可より100回ループ不可、てほうが制限としては面白いかもね。 まあそれは再帰するだけの話で $arr = [nil,"Fizz","Buzz","FizzBuzz"]def fzbz(i) f = ((i%3) == 0) ? 1 : 0 f |= ((i...

      • http://anond.hatelabo.jp/20070508170219 こいつをアセンブラで書こうとしていたが、 すでに http://anond.hatelabo.jp/20070510170511 にそれっぽいものが書かれていた。 しかしデクリメントした直後に判定す...

        • 無くなりそうで無くならないのがアセンブラ使い。 高度な処理には頭を使うが、基本的にはこっちの方が分かりやすいよね。

    • 1.upto(100){|i| case i when 1..2 p i when 3 p 'Fizz' when 4 p i when 5 p 'Buzz' (中略) end}

      • m9

      • おいおい、回答の追記は反則だろ。 確かに「俺はわかっててやってるんだ!」って気持ちは凄くよくわかる。でも増田なんだから別エントリに書いてしまえばいい。たとえm9されても、...

        • まどろっこしいことするなあ print("1\n2\nFizz\n4\nBuzz\nFizz\n7\n8\nFizz\nBuzz\n11\nFizz\n13\n14\nFizzBuzz\n16\n17\nFizz\n19\nBuzz\nFizz\n22\n23\nFizz\nBuzz\n26\nFizz\n28\n29\nFizzBuzz\n31\n32\nFizz\n34\nBuzz\nFizz\n37\n38\nFizz\nBuzz\n41\n...

          • ネタをつきつめたつもりなんじゃね、といおうと思ったけど お前それすごいな。自動生成したのかどっかに転がってた出力を使ったのか知らんが、どちらにせよわざわざご苦労さん。

            • 手で書いた可能性を考慮しないお前の優しさ

              • 面接を受けに来た自称プログラマーが、真剣な表情でこんなのをチマチマ打ってるところを想像したら泣けてきた。 更に指まで使って「これは3の倍数で…」とかやってたりしたらもう

    • #include <stdio.h>main(){ int i; int fizz; int buzz; fizz = 3; buzz = 5; for (i = 1; i <= 100; i++) { if (fizz != i && buzz != i) printf("%d\n", i); else { ...

      • 想定していた回答はこんなの http://anond.hatelabo.jp/20070508173455 が気に入ったのでこなたあげます っ(=ω=.)

      • 想定していた回答はこんなの def setr(a,k,str) a[k-1] = str if a[k-1]==nil && k<=100endres = Array.new(100)(1..100).each{|i| setr(res,i ,i.to_s) setr(res,i*3 ,"Fizz") setr(res,i*5 ,"Buzz") setr(res,i*15,"Fiz...

    • http://anond.hatelabo.jp/20070508200406 てか、この程度だったらマシン語のほうがわかりやすそう。 念のため、リンク。http://anond.hatelabo.jp/20070508170219

    • w3m -dump http://anond.hatelabo.jp/20070508193251 | grep print | sed 's/print("//;s/");//;s/\\n/\n/g'

    • ついでに作ってみた。Javaだお。 public class FizzBuzz { private final int start; private final int last; private final int fizz; private final int buzz; public FizzBuzz(int start, int last, int fizz, int buzz) { this.start = start; this....

      • Javaって変態さんなんですね☆ つーかバグってね?

      • これはひどい。要件を理解してない。

        • public class FizzBuzz { private final int start; private final int last; private final int fizz; private final int buzz; public FizzBuzz(int start, int last, int fizz, int buzz) { this.start = start; this.last = last; this.fizz = fizz; this.buzz = ...

          • http://anond.hatelabo.jp/20070511005106 private boolean isMultiple(int i, int base) { if(i/base * base == i){ return true; } return false; } あ、CならisMultipleは#defineするから一行で済むんだが…。 こうか #define IS_MULT...

          • http://anond.hatelabo.jp/20070511005106 execute()メソッドがprivateなのって何でですか?

            • main() と同一クラス内にあって public にする必要が無いからじゃない? もちろん FizzBuzz が外部からも使用されるようなクラスなら execute() を public にする必要があると思う。

              • あ、なるほど。ありがとうございます。 ついでにもうひとつ聞いてみたいんですけど パラメータってなんでもかんでもメンバ変数にしてしまうのがclassの設計作法としてあるんですかね...

                • http://anond.hatelabo.jp/20070511095003 こりゃ中途半端に拡張性を意識した名残だろうね。fizz 変数の値で割り切れる場合は "Fizz" と表示して buzz 変数の値で割り切れる場合は "Buzz" と表示するよう...

            • 真の答えは、 new FizzBuzz().execute() と最初に書いてからEclipseのquick fixでメソッドを作っていったので、Eclipseが勝手にprivateにしてしまった。 です。

          • http://anond.hatelabo.jp/20070511005106 private boolean isMultiple(int i, int base) { if(i/base * base == i){ return true; } return false; } あ、CならisMultipleは#defineするから一行で済むんだが…。 どうして private b...

      • public class FizzBuzz { public static class NumMessagePair { private final int base; private final String message; public NumMessagePair(int base, String message) { this.base = base; this.message = message; } public boolean isAliquot(int num) ...

    • FizzBuzz・・・。 DROP TABLE IF EXISTS `tmp_fizzbuzz`;CREATE TABLE `tmp_fizzbuzz` (`num` int( 4 ) NOT NULL default 0,`fizz` VARCHAR( 4 ) NOT NULL default '',`buzz` VARCHAR( 4 ) NOT NULL default '',PRIMARY KEY (`num`));delimiter //DR...

      • mySQLで迷子。 なんだこれ難しいな…。 100までの整数がなんらかの状態でレコードにあって後はSQLひとつ流せばおわりなんだけど select if (tf.fizzbuzz = '',tf.num,tf.fizzbuzz) fizzbuzzfrom ( select...

    • http://anond.hatelabo.jp/20070508170219 Public Sub FizzBuzz() Dim i As Integer Dim cc As Range For i = 1 To 100 Set cc = Cells(i, 1) cc.FormulaR1C1 = _ "=IF(INT(ROW()/3)*3=ROW()*1,IF(INT(ROW()/5)*5=ROW()*1,"&quot...

    • リンクつけわすれごめんなさい http://anond.hatelabo.jp/20070508170219 こうですか?よくわかりません(><) COBOLなんて需要無いか… (目に見えてアレなミスをこっそり修正、ああ、どじっ子さ…) ...

      • COBOLすげーー! すげーーーー! 出てない言語はいろいろありそうだけど、 なんかコレハ!ってのないかな。 Googleの検索コマンドで書くとか。。

        • 1,2,3,…,99,100 という文字列に対して正規表現でFizzBuzzに置換するような解法は出てないかなと思ったけど(出てたらごめんなさい><)、正規表現あんまり得意じゃないので私にはできません...

    • http://anond.hatelabo.jp/20070508170219 「%(剰余演算子)使用禁止」みたいな話があったので、逆に無駄に馬鹿っぽいプログラムが出てくると、どれくらい間抜けな「剰余を求める関数」になるか見...

    • http://anond.hatelabo.jp/20070508170219 自分のソースの汚さに焼身自殺したい #include <stdio.h>int main(void);int main(void){ int cn,nf,nb,nfb; cn=nf=nb=nfb=0; for(cn=1;cn<=100;cn++){ while(cn>nf) nf+=3; while(cn&gt...

    • ゴルファーじゃないけど短く出来たので #!/usr/bin/perl@s[map {$_*3} (1..33)] = map {"Fizz"} (1..33);@s[map {$_*5} (1..20)] = map {@s[$_*5]."Buzz"} (1..20);print join "\n", map {$s[$_]||$_} (1..100,"&qu...

    • int aa=0;do{if(aa==aa/15*15)printf("FizzBuzz\n");else if(aa==aa/3*3)printf("Fizz\n");else if(aa==aa/5*5)printf("Buzz\n");else printf("%d\n",aa);}while(aa++<100);

      • インデントしてくれ

        • 自分でインデントして再掲するってのは、どやろか。 http://anond.hatelabo.jp/20070510221124

      • http://anond.hatelabo.jp/20070510221521 じゃあやるわ オリジナルはこちら→http://anond.hatelabo.jp/20070510220016 #include <stdio.h>int main() { int count = 0; do { if (count == count / 15 * 15) printf("FizzBuzz\n&qu...

    • 大元のhttp://anond.hatelabo.jp/20070508170219に剰余(MOD)使用禁止って縛りがあったのよ。

    • いくつか考えられるな まず、if で書いた方が可読性が高い、という考え方。まあでも一行で書いてもすぐわかる以上はよっぽどのアホが入るかも知れないプロジェクトで考慮するような...

    • 元ネタ http://anond.hatelabo.jp/20070508170219 php初めて半年程度でこれ。 もっと上手いやり方があるんだろうなぁ。 $i3=1; $i5=1; $flag=0; for($n=1;$n<101;$n++){ if($i3==3 && $i5==5){ echo "FizzBuzz"; ...

      • プログラミング的な話だと else if を使ったほうがインデントの階層が一個減るので良い。 数学的な話だとnとi3とi5が分かれてるのはnだけにして%演算子で割った方がシンプルで良い。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん