今回はTwitterで出回っていた
電車の中吊り広告にあった
数学の問題をプログラムで解いて見ました。
解説動画はこちら
さて、問題は・・・
GAKKOUの6文字を並び替えてできる
360個の文字列を辞書式に並べるとき
100番目の文字列を求めよ
ということで
マジで難しい!!!
自分如きでは見当もつきません!!
こんな時はプログラムの力を借りて
解いてみることにしましょう。
Pythonでは文字列の組み合わせを作ってくれる
ライブラリがあるのでこれをimportしておきます。
まず、データとして文字列を
リスト型で定義しておきます。
次に文字列の組み合わせを作ります。
辞書形式ということですが
ここでは重複排除のできるSET型で
文字列の組み合わせを作ります。
itertools.permutations(データ,個数)
で順列を求めることができます。
第一引数は先ほど作った文字列のリスト
この中から6個の文字を取るので
第二引数は6になります。
これで文字列の組み合わせが出来上がったので
最後に並び替えですね。
並び替えはsorted関数が使えます。
リスト形式にしてインデックス値の99番目が
100番目にくる文字列になるはずです。
答えは
・
・・
・・・
受験生にとって一番良い答えですね
Python言語はコードを書く量が少なくて済むのが
利点の一つでもあります。
このコードも1行で出来るようにしてみましょう。
こんな感じになりました。
はい
他の言語でもだいたいは1行でいけちゃいますね。
どの言語が書く文字数が少ないのか
調べて見たいものですね。
プログラムできる方は
是非考えて見て下さい。
今回はここまでです
それでは。
電車の中吊り広告にあった
数学の問題をプログラムで解いて見ました。
解説動画はこちら
さて、問題は・・・
GAKKOUの6文字を並び替えてできる
360個の文字列を辞書式に並べるとき
100番目の文字列を求めよ
ということで
マジで難しい!!!
自分如きでは見当もつきません!!
こんな時はプログラムの力を借りて
解いてみることにしましょう。
Pythonでは文字列の組み合わせを作ってくれる
ライブラリがあるのでこれをimportしておきます。
import itertools
まず、データとして文字列を
リスト型で定義しておきます。
s = ['G','A','K','K','O','U']
次に文字列の組み合わせを作ります。
辞書形式ということですが
ここでは重複排除のできるSET型で
文字列の組み合わせを作ります。
itertools.permutations(データ,個数)
で順列を求めることができます。
第一引数は先ほど作った文字列のリスト
この中から6個の文字を取るので
第二引数は6になります。
res = {a for a in itertools.permutations(s,6)}
これで文字列の組み合わせが出来上がったので
最後に並び替えですね。
並び替えはsorted関数が使えます。
リスト形式にしてインデックス値の99番目が
100番目にくる文字列になるはずです。
''.join(list(sorted(res))[99])
答えは
・
・・
・・・
受験生にとって一番良い答えですね
Python言語はコードを書く量が少なくて済むのが
利点の一つでもあります。
このコードも1行で出来るようにしてみましょう。
こんな感じになりました。
import itertools;sorted({''.join(r) for r in itertools.permutations('GAKKOU',6)})[99]
はい
他の言語でもだいたいは1行でいけちゃいますね。
どの言語が書く文字数が少ないのか
調べて見たいものですね。
プログラムできる方は
是非考えて見て下さい。
今回はここまでです
それでは。
コメントする