「FizzBuzz」を含む日記 RSS

はてなキーワード: FizzBuzzとは

2019-04-17

若者応援おじさんの思い出

https://twitter.com/MAEZIMAS/status/1113114798672113665

若者説教する老害は二流。

一流の老害は「君たちこそが真のニュータイプだ」とか言って、若者自分既得権益確保のための鉄砲玉にする。

…いやマジ本当に、若い人気をつけてね。若者説教おじさんは、せいぜいまだ極限の不愉快ですむけど、若者応援おじさんに乗せられると最悪人生詰むので…

というツイート流行っているので、私が遭遇した若者応援おじさんについて書こうと思う。

当時の私は親との折り合いがつかず、学力もそこそこあったし、勉強もしていたのにも関わらず大学に進学せずにフリーターをしていた。実家を出たかったし、大学にも進学したかたから金の工面が当面の目標だった。そんなとき出会ったのが若者応援おじさんのAさんである。Aさんはバブルの頃に就活をしていて、まだインターネットやパーソナル・コンピュータというのが流行る前から電子工作プログラミングをやっていた人だった。実際、経歴を聞いてみると10回以上転職を繰り返しているものの、有名企業(今にして思えば、カビ臭いSIerだが)で部長をしていたことがあって、年収が1700万ぐらい稼いでいたこともある人だった。

最初出会ったとき自分が如何にすごいかということを熱心に語っていた。80年台後半ぐらいのコンピュータ開発の大型プロジェクトに関わっていたとか、セキュリティ専門家とか、今までに触ったことのあるプログラミング言語が300個を超えるとか。でも、当時の技術的なトレンド(MongoDBRuby on Rails、AngularJSとか)についての知識が限りなく少なく、「フレームワークなんてその場で覚えればいい」みたいなタイプだった。中学生の頃にラジオ工作したとか、はんだごてで電子回路設計したとか、そういう話は熱心にするのに、Bram Moolenaarの名前を知らなかったりした。要は、最近プログラマがどういう関心やインセンティブプログラミングやってるかを知らずに、過去の栄光を語ってるようなタイプだったと思う。

まぁ、それでも、その人のコネで中規模程度のSIer入社して、そこそこいい感じの待遇だったように思う。当時の私の技術力は『わかりやすJava入門』『たのしRuby』を一通り終わらせて簡単言語仕様を把握したぐらいでろくにコードも書いたことのないような人間だったから、定時で帰れて手取り二十万もらえるのは甘い汁を吸えたとは思うんだ。

でも入社を決めた一番の理由が、そのAさんが私の関心に理解があると思っていたからだ。というのも、当時の私は「人工知能人工生命に興味があります。三年後に大学入学するまでにプログラミングスキルを磨きつつ生活費学費を稼ぎたい」ということを明言した上で、それを叶えてくれる会社を探していた。技術力はないものの、「自頭がいいか入社してからプログラミングを覚えればすぐに戦力になるよ」と複数人間から言われていて、それぞれ就職先を紹介してもらえるような状況になっていた。今から思えば、そんなコードを書けない人間を自頭なんて胡散臭いもので褒めるような人間は信用してはいけないと思うし、口車に乗せられたと思うのだけど。そこは自分にも甘いところがあったように思う。あ、あと、補足しておくと、当時はDeep Learningなんていうのは全く人口膾炙してなかった時期で、スチュアート・カウフマン金子邦彦に憧れてたような、周回遅れの複雑系に魅せられた若者が私だった。

駄文を書き連ねてしまったが、要は

①親との折り合いが悪く、大学に進学したいが、金が足りない

実家を出るために生活費を稼ぐ必要があったが、飲食バイトとかではスキルが身につかない状態で、価値の高い若い時間無駄にしてしま

③そんなところに現れたのが過去の栄光を話す若者応援おじさんのA

自分殆どコードを書いたことのない業務経験で、21世紀になっても複雑系の話に興味をそそられるような斜に構えたスノッブ

という状況設定理解してくれればいい。

では、入社後の話をしよう。私が配属されたプロジェクトは80万行程度のJavaコードで動いてるBtoB向けの製品保守開発してるプロジェクトだった。やってることはGoogleAmazonMicrosoftみたいな大手ならやってるようなサービスの完全下位互換みたいなソフトウェアを、情弱だけど社員数は多いみたいな企業に売りつけるような仕事だ。国産とか、セキュリティとか、そういうよくわからない言葉を並べ立てて、海外UIも洗練されていて、優秀なエンジニア管理してるものセキュリティ的に怪しいと不安煽り立てて売りつけるようなやつだ。そんなクソみたいな製品でも年間5億円ぐらいの売上になるのだからIT系って糞だなって思う。ネット上では優秀な人間ばかりがアウトプットしてるし、NDAの名の下に詐欺まがいのソフトウェア(今回の例なら無料UIも洗練されていて、使いやすサービス)が明るみにならないのだから、こんな国はさっさとスクラップ・アンド・ビルドすればいいのにって思うよ。IT化されてないのが時代錯誤で〜みたいな記事ネット上でもバズるけど、実際には10年前のスパゲッティコードを惰性と不安につけ込んで売りつけるようなSIerがたくさんある。そんで、そんな意味不明ソフトウェアを導入すれば、どこに何があるのか分からないUI操作に大切な業務時間を奪われて、日本全体の生産性が落ちてしまう。ユーザー時間生産性を奪い、開発者にとっても技術負債しかならないようなソフトウェアを売りつけてる悪性腫瘍みたいなSIerはさっさと滅んでしまえばいいと思うよ。

まぁ、私が配属されたプロジェクトはそんな感じだ。まるで意義を感じないが金にはなってるプロジェクトに配属された。そのプロジェクトの根幹部分は一人のエンジニア設計開発しており、そのエンジニアは既に退職して、どこに何が書いてあるのかわかってない人間が後任として保守を行っている。盲腸みたいに全く有難みのない機能を増やすことでより高く売りつけるようなプロジェクトだった。

そのプロジェクトの中にいる人について話そう。プロジェクトマネージャー仕事漬けで毎月350時間ぐらい働いている60連勤とか当たり前で、常に酔っ払ったような、眠そうな目をしてる人だった。にも関わらず、同じプロジェクト人間仕事がなさすぎて業務時間中に関係ない談笑をしたりしていた。プログラマテスター文書作成をするスタッフが40人ぐらいいるところで、閑散期(機能追加のサーバーリリース前以外)は暇そうにしてる人が多かった。プロジェクトマネージャーを除いて。要は、PM一生懸命働いているが、その一生懸命さは惰性で行われており、無能なのに業務時間が長いPMがいて、その人が全部仕事をやってしまう。他人に頼めない性格らしくて、存在意義が分からない業務他人に頼んでは「なぜこんなこともできないんだ?」って怒鳴るのが生きがいみたいな人だった。頑張ってることがアイデンティティになってて、その頑張りに意味があるのか、必要なのかという吟味ができず、タスク他人に振ることもできず、情報もそのPM一人だけが握っているから、周りの人も「私が仕事を請け負いましょうか」ということもできない。それで新入社員をイビるような存在意義のわからない仕事を振って、できなかったら人格否定をするような感じの。

私が受けた仕事ととしては、週に1回ベンダーのところに会議をしに行くんだけど、そのときの社内の資料を全部紙でプリントアウトして持っていくというのがあった。文書作成スタッフ製品仕様Wordでまとめて、600ページぐらいのpdfにしたものが1500万円ぐらいで売れるらしく、その増えた言語仕様プリントアウトしてベンダーのところまで持っていく。追加された仕様以外にも、今週やったテスト内容をExcelで纏めたものプリントアウトしたりしていた。紙の量で言うと、一回の会議で2500枚ぐらいで、それをキャリーケースに詰めて客先であるベンダーまで持っていくらしい。聞いた話では、その2500枚の会議資料殆どまれずに捨てられるのに、そのPMベンダーにその慣習を廃止しようとは提案しない。ベンダーとの週一の会議の他にも、進捗報告を主とする社内会議があって、PM以外の人はあのプリントアウトする悪習は廃止すべきという話が上がっているのにPMが首を縦に振らないから一向に改善されない。まぁ、そのプリントアウトするのをやるのが私の仕事だったわけですよ。毎週4時間ぐらい掛けてWordExcel文書サイズとか調整してさ。元の文書サイズや余白が狂ってるのに、客先に失礼だと言われて、手直しして、プリントアウされたコロコロコミック何冊分だよ? みたいな紙の束をホチキスで止めていくんだけど、ホチキスの止め方が汚いとやり直し。

じゃあ、なぜPMは頑なに意味のない業務をし続けて、それによって新入社員を使い潰そうとするのかと言えば、弊社の業績が悪くて倒産しそうだったときにそのベンダーが手を貸してくれたからそのときの恩義があるとかなんとか言っていた。だから、靴を舐めるようなことをするし、他人生産性を奪うようなクソ製品を世の中に出して何も感じないらしい。読みもしない産業廃棄物を作り出して、それを無碍にされて喜んでいるような業務が、今の日本の何割を占めているのだろう? そのPMの口癖は「俺はプログラミングは全くわからないが、こんなプリントアウト段取りもできないようなやつはプログラミングなんてできないと思うよ」だった。FizzBuzzどころか変数関数すら知らないような人間にこんなことを言われるのは屈辱だったし、これが高卒経験就職することなのだろうと思った。

他にも、私が受け持った仕事に、製品が動くかどうかを確認するテスターという仕事があった。RSpecSelenium自動化しようと言っても、そんな技術を持ってる人がいなかったから、一々自分でその製品を触って仕様通りになっているか確認しないといけなかった。画面遷移が600ページのpdfになっているから、それを見ながら正しい画面遷移ができているか確認する業務だったが、正直人間のやる仕事ではないと思う。画面遷移だから前のページから次のページに移行したときに前にどのページだったなんてスクショを撮ったぐらいじゃわからないのに、「このテストExcelにした内容じゃ、本当にテストしたのかわからないだろう?」と言われた。言われたとおりにExcelファイルスクショをひたすら貼り付けていたというのに。しかも、その他にも特定ファイルアップロードするときにどの条件だとアップロードができないか判別するテストをどうやって行うのか考えろというのがあった。今までにテスターをやっていた人に聞いても指針なんてないと言われ、「賢い人はそういうのを考えつくものだ。俺はパソコンに詳しくないが」とPMに言われ、嫌気が差した。

まぁ、ここまで書けば、如何にブラックと言うか、理不尽で不合理な職場かというのはわかったと思うけど、いい面もあったんだ。前にも書いたように、未経験高卒手取り20万貰えたのは嬉しかったし、研修のない会社だったから、最初の二ヶ月ぐらいは一人で勝手勉強しててと言われたから、実働換算で時給3000~4000円ぐらい貰える計算だったのかな。一番瞬間時給が高かった日はメールの返答に20分ぐらい使ったときだったから、日給1万、実働換算の時給が30000円ぐらいになった。それぐらい放任されていた。

最初社長が「君にはソースコードUMLを書いてもらおう」とか言って、クラス図を書く練習をしていたんだけど、現場の人は「今更UMLなんて必要ない」「ソースコードを読めばわかる」と言って、全く必要とされていなかった。だから業務とは関係ないTCP/IPRubyGit勉強をしていた。家のことで勉強に対してモチベーションが落ちていた私は、金を貰えるという環境では目の前の勉強に集中できるようになって、元の勉強するための生活リズムっていうのか、そういうのを取り戻せた。それは当時の私にとっては有難かったと思う。

ここまでをまとめると

無料で使えるサービス下位互換といえるような、他人生産性と金無駄にするような製品を開発してるプロジェクトに配属された

PMけが忙しく働いて、周りの人の割り振りができていない。

PM多忙なのはしなくていい仕事を引き受けているだけ。

社会悪のようなソフトウェアを売りつけて金を稼いでいるプロジェクトだった。

仕様書やテスト内容のプリントアウトという必要ない業務をしたり、指示内容と叱責内容が矛盾する理不尽を受けなければならなかった。

しかし、勉強してるだけで月20万貰える環境は有難く、当時の私にとっては願ったり叶ったりだった。

では、次に私がその会社入社から辞めるまでの経緯について書こう。最初のうちは、自分勉強時間を取れていたし、振られる仕事理不尽で意義を感じられないものであるものの、すぐに終わることが多かったか問題ないと感じた。それが徐々に仕事が増えていき、勉強時間が取れなくなっていった。

ここで若者応援おじさんAの登場である。Aさんは私と会ったときは有名企業に勤めていて、そこを辞めて私を紹介してくれた中小企業で働き始め、その数カ月後に私を紹介してくれた。元々、その会社社長とは懇意にしていたから、一緒に働こうという話が何十年も前からあって、今回ちょうどタイミングが合ったから、その友人の会社の重役として就職したらしい。私が就職したのはその数カ月後だった。

Aさんは「何か問題があったら、部下や上司という立場を気にせずに忌憚なく言ってほしい」「俺は人を見る目はある方だ。君は一本芯の通ったところがあるから、周りに流されずに新しいことをできるだろう」「君には将来性がある」「俺は新しい会社でも権力を持ってるからへんなことを言ったり、したりしてる人がいたら遠慮なく言ってほしい」とかそういうのを入社する前に言っていて、まぁ、色々とおかしいところ、FAKE野郎みたいな発言が多かったけど、そこだけは信じてたんだよね。本当に騙すんだったら、そんなすぐに辞められるようなリスクを上げるような発言はしないだろうってさ。ちなみにFAKE野郎って感じたのは、一方的自分の話だけをして、私が質問すると煙に巻いたり、私のことを買ってるという割には私の話をすぐに中断させて自分の話をし続けるとか。その人はFラン出身だったから、ちょっとインテリなことを言うと「君は変わってるね」って言ったり、きょとんとした顔で10秒ぐらい固まった後、すぐに自分の自慢話を再開したりと、決して自分の知らないことや分からないことを認めようとしなかった点だ。他にも、「私と働きたいと言ってくれていた会社はあったけど、そこは技術的に成長できそうだけど給料は月7万程度でバイト身分から、迷ってるんですよね。バイトから自由時間は多く取れるんですけど」みたいな発言をしたら、鳩が豆鉄砲を食ったような顔をして、私が感じていた不安を取り合ってはくれなかった。Aさんは「俺は社内で影響力を持っているから、君を正社員にすることもできる」みたいな話を延々としてたのに、いざ蓋を開けてみると、「君の面接での受け答えが駄目だから契約社員として雇用することになった」「あれから上層部に渋られてしまって、請負契約にすることになった」と話が二転三転していった。だったら、他にも選択肢があったのに、他のところに就職したのにと思ったが、自分能力や経歴で負い目を感じていたから強く言うことはできなかった。高卒就活するというのはそういうことだ。他にも選択肢があるのにも関わらず、どうせ労働に関する知識がないと足元を見られて、条件を徐々に下げられ、他に選択肢をなくした後で、悪い条件で働かざるを得ない状況になっていた。結局、勤務時間タイムカード管理されてるのにフリーランスとして請負契約を結ぶという偽装請負契約させられ、もっと技術力を磨ける選択肢は潰されてしまっていた。

私は会社問題点を丁寧に分析してpdfにまとめてAさんに送ったんだ。それが間違いだった。如何に会社がそのベンダーに良くしてもらったか、大変なのをわかった上で俺たちが会社を立て直してきたかということばかりを話していた。百歩譲ってそこはいいとしても、ベンダーとは関係なく職場環境を良くするための話までいい加減に聞かされてうんざりしていた。

「Aという問題があります。その背景にはBがあります。そのためにはCという解決策があります

という話をしたときに、「Bぐらいみんな当たり前にしている。君だけ特別扱いすることはできない」みたいな返し方をされて、問題が発生してる事自体はないものとされていった。結局、職場にはびこる不合理で理不尽業務ルール改善することはなく、私への人格攻撃で終わってしまった。

毎日どうでもいい作業で疲れ切って勉強時間が取れなくなってしまった私は、最初出会った頃のAさんの言葉を信じて、「私が本当にしたいことは、仕様書やテスト時のスクショプリントアウトしたり、よくわからないテスターをやったりすることではない。このままでは、プログラマとしてのキャリアを積むための勉強時間を作ることもできないし、業務内でコードを書くこともないか業務時間を短くしてほしい」と言った。少なくとも、最初Aさんと会ったときは、「君には人工知能このエントリーをはてなブックマークに追加ツイートシェア

2019-02-05

anond:20190205192741

>「FizzBuzz」のような「いかに上手に処理を書くか」というような題材を持って来ると、

ちょっと違う話だけど、昔FizzBuzz流行ったときも「いかにうまく書くか」みたいな話になって、いつのまにか「FizzBuzzがかけたらすごい」みたいな感じになってたな。

もとは、こんなの数分で書けないとダメだろって話だったのに。

COBOLer、人を呪わば穴2つ

リーナスですら自身攻撃発言自戒するこの時代、本邦の好戦的技術者を見てげんなりした話。

 

COBOLは難しいか、記者が試しにコードを書いてみた 」という記事日経XTECHに掲載された。はてブでも賑わいを見せている。

この記事では COBOL体験記者が OpenCOBOL という処理系FizzBuzz 問題を書き、それを踏まえて COBOL への評価と雑感が示されている。

これに対して、反論記事を見つけた。

 ま た 大 森 敏 行 か

タイトルからし技術批判というより個人攻撃主題にあり、すでに怪しげな雰囲気が出ている。

そんな雰囲気を交わしつつ途中までは「なるほど、COBOL特性データ構造にあり、件の記事では COBOL の特徴を捉えきれていないので結論勇み足だし的外れなのか…」と思っていた(私はCOBOL経験)。

けど、結語まで読んでげんなりしてしまう。

日経BPの記者ふぜいがgdgd言ったところでCOBOLはなくならない。それでいてこのようなFUD技術者敬遠させる効果はある。なくなりもしないのに技術者敬遠したら何が起きるか、わからない記者腹を切って死ぬべきである

日経記事的外れなのは分かったが、ここまでくると読んでて辛い(腹を切って云々はネットスラングだとしてもなんだかな)。

しかも、この人自身過去日経で連載を持っていて、それをプロフィールに書いている(!)のに個人宛じゃなくて日経BP記者ふぜいとか言っちゃうのか…。さら企業社長とのこと……

 

かなり本気で思ってるんで、日経ネットワークの当該記者コンタクト取って欲しいんだけど。 (「悪い大人」より)

あの語調で返されたらコンタクトを取りたがる人はあまりいないんじゃないかなぁー

 

この方、以前にはこんなことも言っていた(この際の批判対象の記事は私も問題があると思うが)。

まさにこれだった。いつの間にか、「オープンソース界」は英語hackマウンティングする奴等が力を持つようになってしまって、陳腐hacker集団に成り下がってしまったようだが。

まさに人を呪わば穴2つ。

 

---

ちなみに批判記事にある「(真の)グローバル変数」の話ですけど、へぇ勉強にはなった。

これは私が不安になったので確認ですけど、一般には「コンパイル単位内でのみグローバルな変数」もグローバル変数って呼びますよね?(ですよね?)

 

あと、"DATA DIVISION" の箇所についても「鶏を裂くに牛刀を持ち出す」という喩えを使うのにもなんか違和感がある。

というか COBOL では問題がなんであれ "DATA DIVISION" を使わざるえないのだったら、「鶏を裂くにも牛刀を持ち出さざるを得ない(だから鶏を捌くな)」のほうが適切なのでは…

COBOLer からすると前者の喩えで膝を打つ感じなんでしょうか?)

その後の「丸木橋経験本四架橋を論じる」の喩えはよくわかる。

2018-12-19

客先常駐で来てるプログラマイライラ

何度注意されても風呂に入らず出社して悪臭蔓延させる。

週イチで午後出社。連絡は部下にラインのみ。通院絶対しない。

机の上に賞味期限が何ヶ月も前に切れた会社粗品放置してあり、捨てるか持ち帰るか言っているが断固拒否

プログラマ20年らしいが、かろうじてFizzBuzzプログラムが書けるレベル

金払って知的障害者介護させられてるみたいで苦痛なんだが。

2018-10-16

anond:20181015215004

とりあえずfizzbuzz組める?組めないとかfizzbuzz意味がわからずそこで検索すらできない状態なら、おとなしく上司に全く分かっていない旨を伝えて勉強時間をとらせてもらえ。

2018-10-12

anond:20181012090959

まんこが書いてるの確定だから、こんだけブコメされてるんだろうな

これが女割り増し

悪い方も良い方もどっちの面もある

勉強会よく参加するけど、基本的におばさんしか居ないよ

若い子、見た目がマシな子なんかが参加する場所じゃねぇ

参加しても中途半端LTする姫ばかりだよ

有名なのはマイクロソフトのアレぐらい

俺はちゃんfizzbuzz書ける池澤あやかのほうが好きだわ

2018-08-21

イキリWebエンジニアのお前らも、どうせMathematicaHaskellゴリゴリ関数プログラミングではFizzBuzzすら満足に書けへんのやろなあ…

Web村の村人は業界に引きこもってばかりだから不自由せんのかも知らんが。

2018-05-14

FizzBuzzうるう年判定ぐらいならすぐ書けるだろうけど

動的計画法とか二分探索は普通会社業務で出てこなくね?

anond:20180514114511

FizzBuzzはさすがにちょっと

Topcoder SRMのDiv2(二軍)の最低レベル問題コンスタントに解けるぐらいの力は欲しい

2018-04-09

anond:20180409171721

ケインズ読んで来い。FizzBuzzより難しいアルゴリズムについての説明が山ほど書いてあるぞ。

anond:20180409153928

FizzBuzz とか素数判定とかってプログラミングの例として出されるんだけど。意味分かるのかな?

2017-12-29

https://anond.hatelabo.jp/20171229110515

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

if(i%0b1111==0){

System.out.println("FizzBuzz");

}else if(i%0b0101==0){

System.out.println("Buzz");

}else if(i%0b0011==0){

System.out.println("Fizz");

}else{

System.out.println(i);

}

}

System.err.println("何か文句でも?");

プログラミング問題

1から100の数字を出力する。

ただし数が3で割り切れるときFizz、5で割り切れるときBuzz、15で割り切れるときFizzBuzzを出力する。

条件:

ソースコード中に3、5を含んではならない。

(3、5以外の数字でも13、15、51というように3、5が含まれているものはアウト)

追記:

pythonで書いた回答例

https://gist.github.com/anonymous/3df71c8ab1ab639f512aa06fdd77e68d

というか2 + 1とか4+1とかすればいいだけだな。言われて気づいた。

2017-11-08

FizzBuzzを書かせて

FizzBuzz」の出力条件を「i % 15 == 0」みたいに15の剰余で判定してる連中はダメだよな。

保守性が高いコードを書くって意識が欠けてると思う。

仕様が「3で割り切れてかつ5で割り切れる場合FizzBuzz」なのに、ボトルネックになってもいない箇所にこんな最適化して。

https://anond.hatelabo.jp/20171107110105

参考書とかチュートリアル動画かに数十万円くらい費やしてきたけど、それの1割も満足に読めてない。

たとえば野球とかのスポーツをするとき、そういったものだけやっても身につくわけ無いのは誰でもわかるでしょう。でも、アスリートとしてのトレーニングをしていてある程度技術があれば、そういうものをやったことで大きく能力を向上させられる。

IT"技術"だって一緒。そういったもの活用できるには、当人が日々トレーニングを続けていて基礎技術能力を持っている必要がある。

こういった基礎自体にかける人は、勉強という視点ではなく、技術習得という視点で考えてみる必要がある。

少なくとも、自己啓発本とかビジネス書とかをたくさん流し読みする様なやりかたは、技術習得とは真逆にあることは確実だから。あのことも知ってるこの人も知ってる、でも自分では何もできない、ってのになるだけ。

技術とは一つのことを何度も視点を変えながら繰り返すような事が必要で、まずはそういった繰り返しこそが技術が磨く手段であることを認識して、同じことをやって無意味とは思わないようなマインドを持てるようにする必要がある。

FizzBuzz, BrainfuckLISP、scribble、lifegame、echoサーバ、などなど、そういったシンプルでも濃い技術要素を扱うプログラムを少なくとも1つは自分の中で習熟するのだ。そして、次々出てくる様々な新しい技術適用しながらこの同じものを何度も書くことで、体に覚えさせている。

これはスポーツで言えば実戦形式での練習の積み重ねであるアプリケーションを作るのはスポーツで言う試合のようなもので、基礎がないのにただ試合に参加ばかりしたところでうまくなどならない。

2017-11-01

anond:20171029161516

FizzBuzz問題を読み替える

具体的に1から15までの例で考えてみる。

集合で考えるとして、集合Aを3の倍数、集合Bを5の倍数とする。

U = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }

A = { 3, 6, 9, 12, 15 }

B = { 5, 10, 15 }

A∩B = { 15 }

¬(A∪B) = { 1, 2, 4, 7, 8, 11, 13, 14 }

ベン図は次のようになる。

+-----------U----------+
|                      |
| +---A------+         |
| | 3 6      |         |
| |  9 12 +--+---B---+ |
| |       |15|       | |
| +-------+--+ 5 10  | |
|         |          | |
|         +----------+ |
|                      |
| 1 2 4 7 8 11 13 14   |
+----------------------+

ド・モルガン定理より

¬(A∪B) = ¬A∩¬B

よって、FizzBuzz問題は次のように読み替えられる。

  • (A∩¬B)3の倍数、かつ、5の倍数でなければ "Fizz"を出力
  • (¬A∩B)3の倍数でなく、かつ、5の倍数ならば "Buzz"を出力
  • (A∩B)3の倍数、かつ、5の倍数ならば "FizzBuzz"を出力
  • (¬A∩¬B)3の倍数でなく、かつ、5の倍数でもなければ元の数字を出力

表にしてみる。

5の倍数5の倍数ではない
3の倍数"FizzBuzz""Fizz"
3の倍数ではない"Buzz"元の数字

コード検討

よくあるコードスタイルWikipediaから借りることにして、使用する言語をCとする。

https://ja.wikipedia.org/wiki/Fizz_Buzz

さて、元の論理を愚直に実装するとどうなるだろうか。

#include <stdio.h>

int main(void) {
    int i;
    for (i = 1; i <= 100; i++) {
        if (i % 3 == 0 && i % 5 == 0) {
            printf("FizzBuzz\n");
        }
        if (i % 3 == 0 && i % 5 != 0) {
            printf("Fizz\n");
        }
        if (i % 3 != 0 && i % 5 == 0) {
            printf("Buzz\n");
        }
        if (i % 3 != 0 && i % 5 != 0) {
            printf("%d\n", i);
        }
    }
    return 0;
}

ここで、元増田が発想したような「3の倍数の後に5の倍数を判定させて"Fizz"と"Buzz"を連続出力すれば"FizzBuzz"の段は要らないんじゃね?」作戦を発動する。

"FizzBuzz"の判定をごっそり削り、"Fizz"と"Buzz"の条件が同時に起こることを考慮する。

forの終わりに改行するようにする。

コードを追って、元の論理と合ってるかを確認しておく。

#include <stdio.h>

int main(void) {
    int i;
    for (i = 1; i <= 100; i++) {
        if (i % 3 == 0) {
            printf("Fizz");
        }
        if (i % 5 == 0) {
            printf("Buzz");
        }
        if (i % 3 != 0 && i % 5 != 0) {
            printf("%d", i);
        }
        printf("\n");
    }
    return 0;
}

2017-10-30

FizzBuzzからもう10年か

FizzBuzz元ネタを知らない人がいたから、ググって確認してみたら2007年話題だったわ。

時間が立つの早すぎ。

2017-10-29

anond:20171029133009

ベン図描くと分かりやすいけど、4つの集合に分ける必要があって

A3の倍数Fizz
B5の倍数Buzz
A∩B15の倍数FizzBuzz
¬(A∪B)それ以外数字

A,B,A∩Bの3つと、それ以外で分ける方が分かりやすいから。

anond:20171029134456

10年くらい前にアメリカITの人がブログで、面接にきた技術者ほとんどがFizzBuzz程度も書けないって書いて、それでネット流行ったんでしょ。

http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

入門書定番になってるかどうか知らんけど、なってるとしたら、それ以降のはず。

FizzBuzzでそんなにムキになる意味あるの?とは思うけど、入門書ならそう書いて然るべきだと思うね。

法15の時に何故FizzBuzzが起こるのかという余計なミスリードを招くかも。

しかも、プログラム入門書を買う人が剰余算なんていうマイナー演算に習熟してる訳もなし。逆にいうと剰余算ぐらい知ってて当たり前という期待は一部の理系のあの傲慢さにほかならない。

っというわけで、FizzBuzzを習う段階の人にとってはあからさまな(馬鹿丁寧な)コードが書いてある本のほうが正しいと私は思います

anond:20171029133742

伝わってなかったかな?

15の剰余が0の時→FizzBuzz+改行

3の剰余が0の時→Fizz+改行

5の剰余が0の時→Buzz+改行

となってるのが

3の剰余が0の時→Fizz

5の剰余が0の時→Buzz

次のループに行く前に改行

としたほうがいいんじゃね?と思うということなんですが。

anond:20171029133357

"FizzBuzz"という単語かどうかは置いておいてよくある。

FizzBuzz問題

いくつかプログラム参考書というか基本書を読んでみたんだけど大体あるFizzBuzz問題に疑問がある。

記憶にある限り全ての本が15の剰余が0の時FizzBuzz、3の剰余が0の時Fizz、5の剰余が0の時にBuzzと表示する処理をしているけどこれ15の処理いるの?

3の剰余が0でFizz、5の剰余が0でBuzzを加えていけば自動的に15の剰余が0の時にFizzBuzzになって表示終わったら改行なりなんなりでいいと思うんだよね。謎。

素人が思ってるだけなのでちゃんとした理由があるなら教えてください。

2017-08-09

https://anond.hatelabo.jp/20170808235942

池澤あやかは少なくともfizzbuzはかける

ちょまどは知らない

http://www.atmarkit.co.jp/ait/articles/1611/25/news004.html

fizzbuzzのかけないプログラマーなんて、沢山いるぞ

それどころか必要条件十分条件がわかっているSEプログラマーは世の中の半分未満

日本IT土方をなめないほうがいい

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん