HACK - {{ HAGO ACK }}

Code Golf

ロト6 の番号をランダムに選択するプログラムをあらゆる言語で実装

目次

  1. Code Golf とは
  2. お題 - ロト6 の番号をランダムに選択する
  3. やってみよう
  4. 各言語別解説
  5. 参考

1. Code Golf とは

概要

ゴルフとは可能な限り短いストローク数(打数) でカップにボールを入れることを競う スポーツだが、それになぞらえて、可能な限り少ないストローク数(打鍵数、バイト数) で要求仕様を満たすプログラムを作成する遊びをCode Golf と呼ぶ。

via Code Golf - P.1 by 浜地慎一郎

歴史

コードを短くする遊びをゴルフと呼ぶようになったのは恐らくPerl コミュニティが発祥であり、

via Code Golf - P.2 by 浜地慎一郎

Code Golf オンラインサービス

目次へ戻る

2. お題 - ロト6 の番号をランダムに選択する

ロト6 のルール

01から43までの43個の数字の中から異なる6個を選択するものである。

via ロト6 - Wikipedia

プログラミング設計

ロト6 のルールを満たすコーディングの仕方はいくつかあると思われるが, 今回は下記のように仕様の統一を図るものとする.

  1. 01 から 43 までの数値の範囲を生成する.
  2. 生成した数値のリスト(配列)をシャッフル(ランダムソート)する.
  3. シャッフルされた数値のリストから6つの数値を取得する.
  4. 選択された数値のリストを - (ハイフン) でつないで文字列にする.
  5. 結果を標準出力する.
  6. その他のルール
    • 組み込みライブラリを使用するのは OK
    • シャッフル機能が言語に搭載されてない場合,ランダムソート関数/メソッド を実装するものとする(その際のアルゴリズムとしては Fisher-Yates で統一).
    • その他の項目に関しても機能毎に出来るだけ構造化することが好ましい.

目次へ戻る

3. やってみよう

Ruby で書いてみよう

  1. loto6.rb を新規作成

     $ vi loto6.rb
    
  2. 実装

    #### ヒント

    • 範囲オブジェクト (Range)
    • シャッフル (Array#shuffle)
    • 指定した数を取る (Array#take)
    • "-" でつなげる (Array#join)
  3. 実行

     $ ruby loto6.rb
     "21-40-35-9-8-2"
    

目次へ戻る

4. 各言語別解説

言語一覧

  1. C
  2. C#
  3. Microsoft Visual Basic
  4. go
  5. Java
  6. Processing
  7. ActionScript
  8. JavaScript
  9. Lua
  10. PHP
  11. Perl
  12. Python
  13. Ruby
  14. Haskell
  15. Scala
  16. Erlang
  17. R
  18. Gauche
  19. awk
  20. なでしこ
  21. シェルスクリプト

静的型付け言語

動的型付け言語

関数型言語

その他

目次へ戻る

5. 参考

目次へ戻る

Speak by - Tomohiro TAIRA | Published date - 12 Feb 2010

Fork me on GitHub