OKWeb「偶数/奇数の判定」

http://okwave.jp/qa/q2122395.html
なんでブクマ数が多いのかと思ったら,そういうことか.orz
古い投稿だけど,Twitterで広まったのかな?

任意の整数の偶数/奇数を判定するモジュールを開発しています。
納期は連休明けです。

Public Function a(b)
  Select Case b
    Case 1
      a = True
    Case 2
      a = False
    Case 3
      a = True
    Case 4
      a = False
     :
    (中略)
     :
    Case 10000
      a = False
  End Select
End Function

上記のようなプログラムを途中まで書いたところなのですが、コードの行数が長く、どうも効率が悪いような気がしています。
このままでは納期に間に合うか不安です。
効率のよいアルゴリズムをご存知の方、教えてください。

その発想は無かった.アルゴリズムってレベルじゃねーぞFizzBuzz問題やれば,余裕で足切りで切るレベル.

改訂新版 Cプログラミング診断室

改訂新版 Cプログラミング診断室

http://www.pro.or.jp/~fuji/mybooks/cdiag/

100%ネタだと思いたいけど,世の中には想像を絶する糞コードを書く職業プログラマがいるのです.このようなコードを書くプログラマがありえないとは言い切れない.

2006年だとリーマンショック以前だし,そういうなんちゃってプログラマがまだ生き残っていたのかもしれない.こういう人がリーマンショックで首切られても,むしろ本人のためだと思うくらいだ.

また、現在は、ソースコードをプリントアウトして1行ずつ眼でチェックしていますが、紙を大量に消費しますし、時間もばかになりません。
効率よくバグを検出する方法を教えてください。

連日の深夜残業でかなり参っています。(><)

そりゃ(もし実在すれば)こんなスキルじゃ毎日残業しても終わらないでしょう...

失礼を承知で一言。
もし小生のプロジェクトにこのようなプログラムを記述している人物がいるとしたら、『現時点のプログラム能力も、将来性も無い』ということで抜けて頂く以外ありません。

ここは同意.「素質が無い」ので周りのためにも本人のためにも,早めの転職をお勧めします.
http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
http://d.hatena.ne.jp/JavaBlack/20120520/p1

ある程度長期的に考えると、プログラマーの能力とは『他人とのコミュニケーション能力』です。
わからないことを自分ひとりで抱え込まずに、上司、同僚に相談できる能力。

いやそれは違うぞ.

このくらいのコードを見てどうすれば実装できるか思いつく,たとえ思いつかなくても「そういう演算子(この場合は剰余演算子)がおそらく存在するだろう」というセンスは,ごく初歩的なプログラマーの素質でしょう.*1 それにこのくらいだと普通に言語の入門書に目を通すだけでもやり方は分かりそうだし,そういう基本的な知識を書籍やオンラインマニュアルを見て頭にたたき込むのもプログラマーの基礎としては必要.そういう努力を怠ったのはプロ失格.こんなプログラマーの基礎スキルをコミュニケーション能力なんかに矮小化してもらいたくない.

聞けなかった理由も想像できるけどね.こんなコードを書いてると何を言われるか分からないから.今までにも似たような質問をして,先輩方から散々ボロクソに言われてきたのかもしれない.

http://b.hatena.ne.jp/entry/okwave.jp/qa/q2122395.html

  • id:rryu ネタとしてもこの発想はなかった。
  • id:reachout 2006年にこの質問をした彼はまだIT業界でプログラマをやっているのでしょうか、ひょっとして欝ってしまってリタイアされたのでしょうか。
  • id:hnw どう見ても釣りなのにマジレスの嵐で笑った。2006年頃はみんな釣り耐性低かったんですかね。そんなことより回答者No.1が生き残ってるかどうかが不安。
  • id:ardarim あまりにアレすぎて、何か隠された意図があるのではないかと深読みしたくなるレベル…
  • id:iteduki 読んだ自分が何か致命的なものを見落としているんじゃないかと疑うレベル
  • id:yoshizawa81 modはコスト高いからand使った方がいいとか、そういうレベルじゃなかった。
  • id:shimooka ( ゚д゚)・・・(つд⊂)ゴシゴシ・・・(;゚д゚)・・・(つд⊂)ゴシゴシ・・・(;゚Д゚) …!?
  • id:okemos これはいくらなんでも何かの釣りじゃないのかな?でないと信じられない。多分、深夜残業で参っているというのは本当で、その現状をありえないコミカルな状態に戯画化したとか?...
  • id:n-styles 行単価で給料支払われるなら納得できる仕様。
  • id:otchy210 Excel のオートフィル機能を使えば、100万くらいまでは簡単に書けるのでお勧めです!
  • id:fifnel これだと10001とか渡すとアウトだし、とりあえず32bitってことで42億くらいまでCaseを追加で書いた方がいいのでは
  • id:era1978 forで1〜10000まで回してソースコードを自動生成するコードを書けばいいのではないか
  • id:SiroKuro 動的コード生成の出番だ
  • id:m_shinzaki これ質問者は「VBで数字を1ずつ上げて同じ構文をコピペ出来る仕組みを作れば楽に書けるよ!」みたいなネタ回答を期待してるんじゃないだろうか
Public Function oddp(ByVal n As Integer) As Boolean 
  Do While n > 10 
    n = n - 10  
  Loop

  Select Case n  
    Case 0: oddp = False  
    Case 1: oddp = True  

    (case 9まで)..  

  End Select
End Function

加減算と順接・分岐・反復のみでモジュロなし

bool IsKisu(int hanabira, bool suki=false){
  return hanabira?IsKisu(hanabira-1,!suki):suki;
} 

と花占いみたいのはどうだろう?w

http://d.hatena.ne.jp/aldente39/20120529

twitter

...マジで?


教えてください
ポインタ変数 xがあるとして、*x++は、私の環境では、*(x+1)となりますが、これは、どの処理系でも同じでしょうか?例えば、*x=*x+1と解釈されるといったことはあるのでしょうか?

http://oshiete1.nifty.com/qa2218152.html

リンク先を見たら,これはこれで別の意味で筋の悪い質問なんだよね...*2
ネタにしてもネタっぽくないし,ひょっとしてマジだったんだろうか.

この辺も同じ人だったりするんだろうか.それとも偶然?これが同一人物の書き込みだとすると,ネタでなかったというのに信憑性が出てくるんだが.それとも裏の裏をかいてるのか,いやまさか.




*1:或いは逆に「こういう演算子/関数(この場合は奇数か偶数を判定する演算子や関数)はたぶん存在しない」というセンスも重要.

*2:まず誤解を招きやすくバグの温床になるので,こういう書き方はすべきでない.たとえ必要でも演算子の優先順位辺りはK&Rでも読めばすむ問題.実行環境ではなく言語仕様を確認すべき.Cには実行環境依存の機能も多いけど,もしそうだとするなら使っちゃ駄目な機能.そういうプログラミングの基本となる思想が身についてない.