2019年11月26日火曜日

開発環境

について、全部リストアップするが加わってたからPythonで、「Batteries Included Philosophy」を活かして、標準ライブラリーのitertoolsのpermutations関数を使用して書いてみた。

Pythonicな書き方。

コード

#!/usr/bin/env python3
from itertools import permutations

for egg in permutations(['ボ', 'ジョ', 'レ', 'ヌ', 'ボ']):
    print('{}{}{}ー{}ー{}ー'.format(*egg))

入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% ./sample.py
ボジョレーヌーボー
ボジョレーボーヌー
ボジョヌーレーボー
ボジョヌーボーレー
ボジョボーレーヌー
ボジョボーヌーレー
ボレジョーヌーボー
ボレジョーボーヌー
ボレヌージョーボー
ボレヌーボージョー
ボレボージョーヌー
ボレボーヌージョー
ボヌジョーレーボー
ボヌジョーボーレー
ボヌレージョーボー
ボヌレーボージョー
ボヌボージョーレー
ボヌボーレージョー
ボボジョーレーヌー
ボボジョーヌーレー
ボボレージョーヌー
ボボレーヌージョー
ボボヌージョーレー
ボボヌーレージョー
ジョボレーヌーボー
ジョボレーボーヌー
ジョボヌーレーボー
ジョボヌーボーレー
ジョボボーレーヌー
ジョボボーヌーレー
ジョレボーヌーボー
ジョレボーボーヌー
ジョレヌーボーボー
ジョレヌーボーボー
ジョレボーボーヌー
ジョレボーヌーボー
ジョヌボーレーボー
ジョヌボーボーレー
ジョヌレーボーボー
ジョヌレーボーボー
ジョヌボーボーレー
ジョヌボーレーボー
ジョボボーレーヌー
ジョボボーヌーレー
ジョボレーボーヌー
ジョボレーヌーボー
ジョボヌーボーレー
ジョボヌーレーボー
レボジョーヌーボー
レボジョーボーヌー
レボヌージョーボー
レボヌーボージョー
レボボージョーヌー
レボボーヌージョー
レジョボーヌーボー
レジョボーボーヌー
レジョヌーボーボー
レジョヌーボーボー
レジョボーボーヌー
レジョボーヌーボー
レヌボージョーボー
レヌボーボージョー
レヌジョーボーボー
レヌジョーボーボー
レヌボーボージョー
レヌボージョーボー
レボボージョーヌー
レボボーヌージョー
レボジョーボーヌー
レボジョーヌーボー
レボヌーボージョー
レボヌージョーボー
ヌボジョーレーボー
ヌボジョーボーレー
ヌボレージョーボー
ヌボレーボージョー
ヌボボージョーレー
ヌボボーレージョー
ヌジョボーレーボー
ヌジョボーボーレー
ヌジョレーボーボー
ヌジョレーボーボー
ヌジョボーボーレー
ヌジョボーレーボー
ヌレボージョーボー
ヌレボーボージョー
ヌレジョーボーボー
ヌレジョーボーボー
ヌレボーボージョー
ヌレボージョーボー
ヌボボージョーレー
ヌボボーレージョー
ヌボジョーボーレー
ヌボジョーレーボー
ヌボレーボージョー
ヌボレージョーボー
ボボジョーレーヌー
ボボジョーヌーレー
ボボレージョーヌー
ボボレーヌージョー
ボボヌージョーレー
ボボヌーレージョー
ボジョボーレーヌー
ボジョボーヌーレー
ボジョレーボーヌー
ボジョレーヌーボー
ボジョヌーボーレー
ボジョヌーレーボー
ボレボージョーヌー
ボレボーヌージョー
ボレジョーボーヌー
ボレジョーヌーボー
ボレヌーボージョー
ボレヌージョーボー
ボヌボージョーレー
ボヌボーレージョー
ボヌジョーボーレー
ボヌジョーレーボー
ボヌレーボージョー
ボヌレージョーボー
% 

ちょっと短い、少ない行数のコードで。ジェネレーターの性質を活かさずに一つの文字列として出力するから、今回の場合は問題無かったけど、メモリーの使用効率は良くない。

コード

#!/usr/bin/env python3
from itertools import permutations

print('\n'.join(['{}{}{}-{}-{}-'.format(*egg)
                 for egg in permutations(['ボ', 'ジョ', 'レ', 'ヌ', 'ボ'])]))

入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% ./sample.py
ボジョレ-ヌ-ボ-
ボジョレ-ボ-ヌ-
ボジョヌ-レ-ボ-
ボジョヌ-ボ-レ-
ボジョボ-レ-ヌ-
ボジョボ-ヌ-レ-
ボレジョ-ヌ-ボ-
ボレジョ-ボ-ヌ-
ボレヌ-ジョ-ボ-
ボレヌ-ボ-ジョ-
ボレボ-ジョ-ヌ-
ボレボ-ヌ-ジョ-
ボヌジョ-レ-ボ-
ボヌジョ-ボ-レ-
ボヌレ-ジョ-ボ-
ボヌレ-ボ-ジョ-
ボヌボ-ジョ-レ-
ボヌボ-レ-ジョ-
ボボジョ-レ-ヌ-
ボボジョ-ヌ-レ-
ボボレ-ジョ-ヌ-
ボボレ-ヌ-ジョ-
ボボヌ-ジョ-レ-
ボボヌ-レ-ジョ-
ジョボレ-ヌ-ボ-
ジョボレ-ボ-ヌ-
ジョボヌ-レ-ボ-
ジョボヌ-ボ-レ-
ジョボボ-レ-ヌ-
ジョボボ-ヌ-レ-
ジョレボ-ヌ-ボ-
ジョレボ-ボ-ヌ-
ジョレヌ-ボ-ボ-
ジョレヌ-ボ-ボ-
ジョレボ-ボ-ヌ-
ジョレボ-ヌ-ボ-
ジョヌボ-レ-ボ-
ジョヌボ-ボ-レ-
ジョヌレ-ボ-ボ-
ジョヌレ-ボ-ボ-
ジョヌボ-ボ-レ-
ジョヌボ-レ-ボ-
ジョボボ-レ-ヌ-
ジョボボ-ヌ-レ-
ジョボレ-ボ-ヌ-
ジョボレ-ヌ-ボ-
ジョボヌ-ボ-レ-
ジョボヌ-レ-ボ-
レボジョ-ヌ-ボ-
レボジョ-ボ-ヌ-
レボヌ-ジョ-ボ-
レボヌ-ボ-ジョ-
レボボ-ジョ-ヌ-
レボボ-ヌ-ジョ-
レジョボ-ヌ-ボ-
レジョボ-ボ-ヌ-
レジョヌ-ボ-ボ-
レジョヌ-ボ-ボ-
レジョボ-ボ-ヌ-
レジョボ-ヌ-ボ-
レヌボ-ジョ-ボ-
レヌボ-ボ-ジョ-
レヌジョ-ボ-ボ-
レヌジョ-ボ-ボ-
レヌボ-ボ-ジョ-
レヌボ-ジョ-ボ-
レボボ-ジョ-ヌ-
レボボ-ヌ-ジョ-
レボジョ-ボ-ヌ-
レボジョ-ヌ-ボ-
レボヌ-ボ-ジョ-
レボヌ-ジョ-ボ-
ヌボジョ-レ-ボ-
ヌボジョ-ボ-レ-
ヌボレ-ジョ-ボ-
ヌボレ-ボ-ジョ-
ヌボボ-ジョ-レ-
ヌボボ-レ-ジョ-
ヌジョボ-レ-ボ-
ヌジョボ-ボ-レ-
ヌジョレ-ボ-ボ-
ヌジョレ-ボ-ボ-
ヌジョボ-ボ-レ-
ヌジョボ-レ-ボ-
ヌレボ-ジョ-ボ-
ヌレボ-ボ-ジョ-
ヌレジョ-ボ-ボ-
ヌレジョ-ボ-ボ-
ヌレボ-ボ-ジョ-
ヌレボ-ジョ-ボ-
ヌボボ-ジョ-レ-
ヌボボ-レ-ジョ-
ヌボジョ-ボ-レ-
ヌボジョ-レ-ボ-
ヌボレ-ボ-ジョ-
ヌボレ-ジョ-ボ-
ボボジョ-レ-ヌ-
ボボジョ-ヌ-レ-
ボボレ-ジョ-ヌ-
ボボレ-ヌ-ジョ-
ボボヌ-ジョ-レ-
ボボヌ-レ-ジョ-
ボジョボ-レ-ヌ-
ボジョボ-ヌ-レ-
ボジョレ-ボ-ヌ-
ボジョレ-ヌ-ボ-
ボジョヌ-ボ-レ-
ボジョヌ-レ-ボ-
ボレボ-ジョ-ヌ-
ボレボ-ヌ-ジョ-
ボレジョ-ボ-ヌ-
ボレジョ-ヌ-ボ-
ボレヌ-ボ-ジョ-
ボレヌ-ジョ-ボ-
ボヌボ-ジョ-レ-
ボヌボ-レ-ジョ-
ボヌジョ-ボ-レ-
ボヌジョ-レ-ボ-
ボヌレ-ボ-ジョ-
ボヌレ-ジョ-ボ-
%

一行で書いたけど、pep8に準拠するようにテキストエディターでpythonのコードのファイルの保存時にautopep8を使うように設定してあるから、79列を超える行が改行されて、短く書いたつもりが結局1つ目のPythonicなコードと同じ行数に。

0 コメント:

コメントを投稿