私はあなたが望むことをする解決策を見つけました。悲しいことに、私はそれを信用することができません:)
これが例です。次のようなパターンファイルをフィードしますpattern1
。
## ##
# #
# #
#
### ### ##
# # #
# #
# #
# #
# # #
## ### ###
#
# #
# #
## ##
たとえば、次のように、プログラムを呼び出します。
./cword pattern1 /etc/dictionaries-common/words
出力は
SODS##HOG##AMPS
APIA#RADON#LAUE
TESS#ALONE#ERNA
ENCHANTRESS#GYM
###ADS###TUTU##
#PAYDAY#ESPIES#
REV#SCALD#SCRIP
ARON#KNOWS#SITE
MCCOY#KNITS#TET
#HARASS#NAPPED#
##TACT###DIE###
MCI#COORDINATES
ELOY#AMARU#ROLL
SINE#TARIM#LIMA
SOSA##REP##SLOT
または、別の時間を実行します。
PAWN##HOT##BEST
OLEO#SURYA#OMAR
LOAN#AGAPE#ABLE
SELFISHNESS#RTE
###ASH###OKAY##
#KATMAI#EPILOG#
INN#SYNOD#MULES
SETH#SCHWA#MONA
MEIER#AMIDS#GEM
#SPLATS#NOWAYS#
##APSE###RAY###
WIS#PATRONYMICS
ALTA#CHOKE#AREA
SLOP#HEARD#ROBS
PSST##ERA##ANUS
もちろん、パターンが大きい場合やワードリストが小さい場合は、マイレージが(大幅に)変わる可能性があります。Q9550プロセッサで26.5秒で1000世代を実行できました。
time for a in $(seq 1 200)
do
for a in 1 2 3 4 5
do
./cword pattern1 /etc/dictionaries-common/words | md5sum&
done
wait
done | sort | uniq -c | sort -n | tee >(wc -l)
出力は、これらが実際に1000のユニークなソリューションであることを確認しました。あなたが私に尋ねれば、悪くはない。(タイミングには、ソリューションごとのmd5sumsを計算する時間が含まれていました)