数字の0-9を使用する最古の日付を見つけるには、0〜9の数字をDD/MM HH:MMの形式で1回だけ使用すると、 :SS。実際の答えは次のようになります:26/03 17:48:59DD/MM HH:MM:SS
2
A
答えて
3
[0 ... 9]のすべての順列を生成し、それらが有効な日付であるかどうかを確認します。
10! = 3 628 800
効率を改善したい場合は、バックトラッキングが役立ちます。この場合、単なる制約充足問題であり、有効日数は順列の数よりはるかに少ない。時間(10秒の時間)の最初の数字が0または1にする必要があるので、また、あなたは、例えば
01が動作しないなど
、その後、最低一日、最低月の順にそれらを考慮することができます 02は、時間の最初の桁が1でなければならず、日付は2月に0,1,2にしかならないため、機能しません。
など。
FWIW - のみ769有効な日付
import datetime
import itertools
count = 1
for perm in itertools.permutations(range(10)):
i = 0;
day = perm[i]+perm[i+1]*10
i+=2
month = perm[i]+perm[i+1]*10
i+=2
hour = perm[i]+perm[i+1]*10
i+=2
minute = perm[i]+perm[i+1]*10
i+=2
second = perm[i]+perm[i+1]*10
try:
print datetime.datetime(2012, month, day, hour, minute, second)
count+=1
except:
pass
print count
1
これはconstraint satisfaction problemあるがあります。 MM/DD HH:MM:SSの日付形式で最初に作業し、後で回答を変換することができます。この形式では、辞書的に最小の有効な日付文字列が検索の答えになります。したがって、体系的に検索すると、最初に見つかった有効な日付が解決されます。
本質的に、スペースの検索には12 x 31 x 24 x 60 x 60のほとんど有効な日付があります。だから、あなたの制約が含まれます:
month < 13
day < 32
hour < 24
minutes < 60
seconds < 60
occurrence(date, i) == 1 for each i = 0 to 9
あなたは、検索空間を体系的に進めるためにbacktracking search algorithmを使用することができます。
関連する問題
- 1. HH:MM:SS Countdowntimer
- 2. SimpleFormatter DD.MM.YYYY HH:mm:ssの
- 3. SASタイムスタンプHH:MM:SS
- 4. 時間(hh:mm:ss)をR
- 5. T-SQL:nvarcharからhh:mm:ss
- 6. YYYY/MM/DD HH:MM:SSオフセットをMM/DD/YYYY HH:MM:SSオフセット?
- 7. WPF:入力時間(hh:mm:ss)
- 8. AndroidのHH:MM:SS形式のカウントダウンタイマー
- 9. python hh:mm:ss秒にpython 3
- 10. jQuery Datatables列合計()のhh:mm:ss
- 11. 日付ピッカー時間:HH:mm:ss
- 12. 出力時間(hh:mm:ss形式):
- 13. VBS Msgbox(DateTime.Now.ToString( "yyyyMMdd HH:mm:ss"))エラーを表示
- 14. (YYYY-MM-DD-HH:MM:SS)日付時刻を
- 15. ビジュアルスタジオの日時フォーマット "YYYY-MM-DD hh:mm:ss"
- 16. NetezzaでHH:MM:SSをMinutesに変換する
- 17. POSIXctのx軸HH:mm:SSをプロットする
- 18. Javaフォーマットyyyy-MM-dd'T'HH:mm:ss.SSSz〜yyyy-mm-dd HH:mm:ss
- 19. HH:MM:SSを分単位で変換
- 20. フォーマットHH:MM:SSとしてのAndroid EditText
- 21. mm/dd/yyyyのNSString to NSDate hh:mm:ss形式
- 22. LibreOffice SUM時間枠の形式HH:MM:SS
- 23. 時間の書式設定(HH:MM:SS)
- 24. SQL Serverのフォーマット日付DD.MM.YYYY HH:MM:SS
- 25. タイマーはラベルにHH:MM:SSを表示する
- 26. HH:MM:SS形式のSQLite時間差計算
- 27. フォーマットDatagridviewの列の時間は、hh:mm:ss
- 28. shedまたはawkを使用して「日hh:mm:ss」フィールドをhh:mm:ssまたは秒に変換します。
- 29. Pythonでは、2つの異なる時刻を(HH:MM:SS-HH:MM:SS)の形式で減算します。
- 30. JavascriptまたはjQueryを使用してYHY-MM-DD HH:MM:SSからHH:MM:SSをトリムする方法
ブルートフォース10!可能性は依然として妥当な時間内に計算可能である。最低文字数の月から始めて、賢明にそれを実行し、実現可能な解決策を最初に見つけたときに終了することもできます。 – amit
いいえ、アルゴリズムは必要ありません。すでに質問に対する回答があります。 –
私は答えを知っていますが、プログラムを使って計算しようとしています。 – devsathish