Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,73 @@
|
|||
Procedure isSelfDescribing(x.q)
|
||||
;returns 1 if number is self-describing, otherwise it returns 0
|
||||
Protected digitCount, digit, i, digitSum
|
||||
Dim digitTally(10)
|
||||
Dim digitprediction(10)
|
||||
|
||||
If x <= 0
|
||||
ProcedureReturn 0 ;number must be positive and non-zero
|
||||
EndIf
|
||||
|
||||
While x > 0 And i < 10
|
||||
digit = x % 10
|
||||
digitSum + digit
|
||||
If digitSum > 10
|
||||
ProcedureReturn 0 ;sum of digits' values exceeds maximum possible
|
||||
EndIf
|
||||
digitprediction(i) = digit
|
||||
digitTally(digit) + 1
|
||||
x / 10
|
||||
i + 1
|
||||
Wend
|
||||
digitCount = i - 1
|
||||
|
||||
If digitSum < digitCount Or x > 0
|
||||
ProcedureReturn 0 ;sum of digits' values is too small or number has more than 10 digits
|
||||
EndIf
|
||||
|
||||
For i = 0 To digitCount
|
||||
If digitTally(i) <> digitprediction(digitCount - i)
|
||||
ProcedureReturn 0 ;number is not self-describing
|
||||
EndIf
|
||||
Next
|
||||
ProcedureReturn 1 ;number is self-describing
|
||||
EndProcedure
|
||||
|
||||
Procedure displayAll()
|
||||
Protected i, j, t
|
||||
PrintN("Starting search for all self-describing numbers..." + #CRLF$)
|
||||
For j = 0 To 9
|
||||
PrintN(#CRLF$ + "Searching possibilites " + Str(j * 1000000000) + " -> " + Str((j + 1) * 1000000000 - 1)+ "...")
|
||||
t = ElapsedMilliseconds()
|
||||
For i = 0 To 999999999
|
||||
If isSelfDescribing(j * 1000000000 + i)
|
||||
PrintN(Str(j * 1000000000 + i))
|
||||
EndIf
|
||||
Next
|
||||
PrintN("Time to search this range of possibilities: " + Str((ElapsedMilliseconds() - t) / 1000) + "s.")
|
||||
Next
|
||||
PrintN(#CRLF$ + "Search complete.")
|
||||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
|
||||
DataSection
|
||||
Data.q 1210, 2020, 21200, 3211000, 42101000, 521001000, 6210001000, 3214314
|
||||
EndDataSection
|
||||
|
||||
Define i, x.q
|
||||
For i = 1 To 8
|
||||
Read.q x
|
||||
Print(Str(x) + " is ")
|
||||
If Not isSelfDescribing(x)
|
||||
Print("not ")
|
||||
EndIf
|
||||
PrintN("selfdescribing.")
|
||||
Next
|
||||
PrintN(#CRLF$)
|
||||
|
||||
displayAll()
|
||||
|
||||
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
Loading…
Add table
Add a link
Reference in a new issue