- プログラミングのお題スレ Part10
874 :デフォルトの名無しさん[sage]:2018/04/17(火) 10:33:51.01 ID:ePc5Lh3L - >>869 Squeak/Pharo Smalltalk
| check | check := [:digitsStr | | digits checkDigit calcDigit | digits := digitsStr asArray collect: #digitValue. checkDigit := digits last. calcDigit := ((digits * #(6 5 4 3 2 7 6 5 4 3 2 0)) sum \\ 11 in: [:x | x < 2 ifTrue: [0] ifFalse: [11 - x]]). checkDigit = calcDigit ]. #('99999999999?' '??9999999999') collect: [:incmpNum | | indices candNums | indices := incmpNum asArray collectWithIndex: [:chr :idx | chr == $? ifTrue: [idx] ifFalse: [0]]. indices := indices reject: #isZero. candNums := OrderedCollection new. ($0 to: $9) asDigitsToPower: indices size do: [:digs | | candNum | candNum := incmpNum copy. indices with: digs do: [:idx :dig | candNum at: idx put: dig]. (check value: candNum) ifTrue: [candNums add: candNum] ]. incmpNum -> candNums asStringWithCr ]
|
|