目次

目次

Pythonっぽい書き方で配列の中身をランダム表示 〜他の言語はどうなるか?〜

近藤 圭太
近藤 圭太
最終更新日2017/09/28 投稿日2017/09/28

最近Pythonって便利だなーと思っています。

社内の定例ミーティングで話す人の順番をランダムにするために適当に作ってみました。

python

import random
list = ['Aさん','Bさん','Cさん','Dさん','Eさん','Fさん','Gさん','Hさん']
random.shuffle(list)
for (i,s) in enumerate(list):
  print("{}: {}".format(i+1,s))

出力結果

1: Fさん
2: Hさん
3: Aさん
4: Cさん
5: Gさん
6: Bさん
7: Eさん
8: Dさん

皆さんがお得意な言語だとどんな書きっぷりになるんでしょうか? 社内のナレッジサイトで募集したところ次のような回答がありましたので紹介させて頂きます。

CoffeeScript

coffee> list =  ['Aさん','Bさん','Cさん','Dさん','Eさん','Fさん','Gさん','Hさん']
[ 'Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん', 'Fさん', 'Gさん', 'Hさん' ]
------> goodShuffle = (arr) ->
.......   i = undefined
.......   j = undefined
.......   temp = undefined
.......   arr = arr.slice()
.......   i = arr.length
.......   if i == 0
.......     return arr
.......   while --i
.......     j = Math.floor(Math.random() * (i + 1))
.......     temp = arr[i]
.......     arr[i] = arr[j]
.......     arr[j] = temp
.......   arr
[Function]
coffee> goodShuffle(list).forEach (i,idx)-> console.log idx + 1 + ": " + i
1: Dさん
2: Aさん
3: Hさん
4: Fさん
5: Gさん
6: Bさん
7: Cさん
8: Eさん
undefined
coffee>

Linuxコマンド

$ echo A > user.txt
$ echo B >> user.txt
$ echo C >> user.txt
...(略)...

$ sort -R user.txt | nl

結果

 1    A
 2    H
 3    B
 4    C
 5    E
 6    D
 7    G
 8    F

Ruby

list = ['Aさん','Bさん','Cさん','Dさん','Eさん','Fさん','Gさん','Hさん']

shuffled_list = list.shuffle

shuffled_list.each_with_index {|name, i| puts "#{i + 1}: #{name}" }

出力結果

 1    A
 2    H
 3    B
 4    C
 5    E
 6    D
 7    G
 8    F

近藤 圭太

酒好き。 貝類、特に牡蠣に目がない。
釣り始めました。

目次