- プログラミングのお題スレ Part5
189 :デフォルトの名無しさん[sage]:2014/10/04(土) 00:03:48.16 ID:en9JGvHv - >>178 Squeak Smalltalk
| str digitGroups count baseCounts ans | str := 'この文字列には1が{1}個,2が{2}個,3が{3}個,1から3以外の数字が{4}個ある。'. digitGroups := #((1) (2) (3) (4 5 6 7 8 9 0)). count := [:digits | digitGroups collect: [:ds | digits count: [:d | ds includes: d]]]. baseCounts := count value: ((str format: #('' '' '' '')) asArray select: #isDigit thenCollect: #digitValue). [:exit | (0 to: 9) asDigitsToPower: 4 do: [:digits | (count value: digits) + baseCounts = digits ifTrue: [ans := digits. exit value] ] ] valueWithExit. ^str format: ans "=> 'この文字列には1が4個,2が1個,3が3個,1から3以外の数字が1個ある。' "
|
|