Diese Herausforderung ist eine Hommage an unseren Legendary Challenge Writer ™, Calvins Hobbys - jetzt umbenannt in Helka Homba - im selben Sinne wie Generate Dennis Numbers .
Calvin leistet einen ziemlich beeindruckenden Beitrag zu PPCG. Insgesamt steht er an sechster Stelle und ist wahrscheinlich die beste Herausforderung, wenn es um das Schreiben von Texten geht. Bei dieser Herausforderung konzentrieren wir uns natürlich auf seine Benutzer-ID.
26997 mag zunächst nicht sehr interessant aussehen. Tatsächlich ist es
in mancher Hinsicht fast interessant. Hier ist zum Beispiel ein Diagramm 26997 mod <n>
für bestimmte Werte von n
:
n | 26997 % n
----+-----------
3 | 0
4 | 1
5 | 2
6 | 3
7 | 5 :(
8 | 5
9 | 6
10 | 7
26997 ist jedoch eine der wenigen Zahlen, die dargestellt werden können , wobei eine ganze Zahl> 0 ist.(n * 10)n - n
n
Hier sind die ersten Zahlen, die auf diese Weise ausgedrückt werden können und die wir nachfolgend als Calvin-Zahlen bezeichnen :
9
398
26997
2559996
312499995
46655999994
8235429999993
1677721599999992
387420488999999991
99999999999999999990
28531167061099999999989
8916100448255999999999988
3028751065922529999999999987
1111200682555801599999999999986
437893890380859374999999999999985
184467440737095516159999999999999984
82724026188633676417699999999999999983
39346408075296537575423999999999999999982
19784196556603135891239789999999999999999981
10485759999999999999999999999999999999999999980
Diese Calvin-Zahlen haben einige interessante Eigenschaften. Weitere Muster entstehen, wenn wir sie nach rechts ausrichten und alle 9
s hervorheben :
Diejenigen, die uns für diese Herausforderung interessieren, sind:
Unabhängig davon endet
n
jede Calvin-Zahl mit .10n - n
So, Calvin (1) mit Enden
9
, Calvin (2) mit Enden98
, und das Muster weiter997
,9996
,99995
usw., wobei jede aufeinanderfolgenden Calvin Anzahl Abzählen und Hinzufügen eines zusätzlichen9
zum Anfang zurück .Für Werte von
n
wheren % 10 == 0
(dhn
ist teilbar durch 10) endet Calvin (n) mit .102n - n
Das heißt, das Muster erstreckt sich über doppelt so viele Stellen wie normal, wobei eine zusätzliche Anzahl von
9
s am Anfang gleich istn
.Wenn
n
eine Potenz von10
(10
,100
,1000
, etc.), erstreckt sich das Muster noch weiter jede einzelne Ziffer entweder a9
oder a0
.Dieses Muster ist das folgende: Neunen und Nullen. Dies ist in einem Diagramm einfacher zu verstehen (Ihre Lösung muss ohnehin nur Zahlen bis 10000 verarbeiten, das ist also alles, was Sie benötigen):
(n + 1) * 10n - n
n
n | Calvin(n) -------+----------------------- 10 | 19 nines, 1 zero 100 | 298 nines, 2 zeroes 1000 | 3997 nines, 3 zeroes 10000 | 49998 nines, 4 zeroes
Die Anzahl der Neunen weist sogar mehrere Eigenschaften von Calvin Numbers selbst auf, aber das ist zu detailliert für diese Herausforderung.
Herausforderung
Calvin-Zahlen werden viel zu groß, viel zu schnell, als dass die n-te Calvin -Zahlen-Herausforderung in Sprachen ohne Ganzzahlen mit willkürlicher Genauigkeit durchgeführt werden könnte Eine Zahl ist eine "Kandidaten-Calvin-Zahl" oder nicht.
Hier sind die Kriterien für eine Nummer, die als Kandidat für eine Calvin-Nummer angesehen werden soll (im Folgenden kurz als CCN bezeichnet):
Es endet mit einer Zahl, die zum Muster einer ganzen Zahl passt .
10n - n
n
Als CCN muss eine Zahl also mit 9 oder 98 oder 997, 9996, 99995 usw. enden.
Wenn die letzte Ziffer ist
0
, muss es auch am Ende mit , für die gleichen wie im vorherigen Punkt.102n - n
n
Dies bedeutet, dass
12312312399999999999999999999999999999999999980
es sich nicht um eine CCN handelt, sondern10485759999999999999999999999999999999999999980
um eine (in der Tat die richtige).Wenn der Wert
n
in den beiden vorherigen Schritten eine Potenz von 10 ist, muss die gesamte Zahl dem oben beschriebenen dritten Muster entsprechen.
Input-Output
Die Eingabe wird als Zeichenfolge bereitgestellt und stellt immer eine Zahl dar, die kleiner ist als Calvin(10000) + 10000
(was auch ausgedrückt werden kann als
). (Zur Verdeutlichung ist die größtmögliche Eingabe 50000 Neunen und die kleinstmögliche Eingabe ist .)1050000
1
Die Ausgabe sollte ein wahrer Wert sein, wenn die Eingabe eine Zahl darstellt, die eine CCN ist, und andernfalls ein falscher Wert. Die Definitionen dieser Begriffe finden Sie unter Meta .
Testfälle
Eingaben, die einen Wahrheitswert ergeben sollen:
9
26997
99999999999999999990
437893890380859374999999999999985
10485759999999999999999999999999999999999999980
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999900
259232147948794494594485446818048254863271026096382337884099237269509380022108148908589797968903058274437782549758243999867043174477180579595714249308002763427793979644775390624999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999850
1027092382693614216458468213549848274267264533712122209400214436472662418869004625362768700557725707157332451380426829473630485959339004149867738722096608953864534215649211386152032635755501464142277508289403434891444020975243742942368836579910208098242623061684967794815600266752580663281483595687307649904776800899000484103534573979334062832465904049046104660220505973505050538180250643437654409375728443182380726453925959886901573523090619465866810938078629561306599174923972607310649219442207992951278588892681161967770532314854195892941913447519131828356181219857012229150315613569162930098836696593474888020746503116685472977764615483225628639443918309216648893055765917642528801571387940219884056021782642758517893124803355573565644666880920219871370649806723296262307899148031362558110611562055614190049332906933360406981359187305353360484377948591528385990255894034369523166777375785900198782250651053530165824984161319460372145229568890321167955690544235365954748429659526071133879976348254667755220636244075595290123987745560038255541751251200827018722242010925729483977388235141539109139120069464709993781356334885359200734157439642935779132120725231008699003342908280056975158266782782304550273268246184659474285971272532354920744956064671379745219778013465792544241259691493098443741845166419905920702654683993902052727208789915748213660571390107102976665776293366616518962323688316843422737162297255648351087284877987537325761187239807598009767936409247247417410607537333841650998421607775989879490006136112078031237742552602618996017404602674987181629319060214150458746352191115606789019875790921190573561400752476956787515392210098071407806221412149732955903681690377998882038499470092453400748916257640501488510563314141992573250882286817352407459053866180642034662845694338400386823496563185664221362457851894843439705365082614359220653285052800751906334000698723288454227654466240011140570190301931122357632719033275258503935182047714841766010764632214069382579660602964184231995352310981811428980530707871661256260926759509418970021224649566130995825802676411575264295689037775857674060557127369881379685432291930869072749065675720647595081516460449973211035071920099349836074945813885239767788449030051892470053308048906746273036871919251738920141071153777908913021898541658119513188402271468288293408246833819954990709460114510017598873554406350044072275643892449218394225569069468466660333869360644718801813500285081977089623921689922204185138003164149106921903053243405307546841149889662566529697217181329051855403329741409045760789280950603184354320839342588593832348459938736210265795978675460906504449491132656307256451707333439200130425932724262464823848348296787445624028385464112471408499986690593095395244034885421580844176161027627954578726208600199909963055422192706751708210693468639072881081717288837393188012794669089175022406897622823484220002211676520484520241135615999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999028
Eingaben, die zu einem falschen Wert führen sollen:
1
26897
79999999999999999990
437893890380859374299999999999985
12312312399999999999999999999999999999999999980
999998999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999900
259232147948794494594485446818048254863271026096382337884099237269509380022108148908589797968903058274437782549758243999867043174477180579595714249308002763427793979644775390624999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999911111
1027092382693614216458468213549848274267264533712122209400214436472662418869004625362768700557725707157332451380426829473630485959339004149867738722096608953864534215649211386152032635755501464142277508289403434891444020975243742942368836579910208098242623061684967794815600266752580663281483595687307649904776800899000484103534573979334062832465904049046104660220505973505050538180250643437654409375728443182380726453925959886901573523090619465866810938078629561306599174923972607310649219442207992951278588892681161967770532314854195892941913447519131828356181219857012229150315613569162930098836696593474888020746503116685472977764615483225628639443918309216648893055765917642528801571387940219884056021782642758517893124803355573565644666880920219871370649806723296262307899148031362558110611562055614190049332906933360406981359187305353360484377948591528385990255894034369523166777375785900198782250651053530165824984161319460372145229568890321167955690544235365954748429659526071133879976348254667755220636244075595290123987745560038255541751251200827018722242010925729483977388235141539109139120069464709993781356334885359200734157439642935779132120725231008699003342908280056975158266782782304550273268246184659474285971272532354920744956064671379745219778013465792544241259691493098443741845166419905920702654683993902052727208789915748213660571390107102976665776293366616518962323688316843422737162297255648351087284877987537325761187239807598009767936409247247417410607537333841650998421607775989879490006136112078031237742552602618996017404602674987181629319060214150458746352191115606789019875790921190573561400752476956787515392210098071407806221412149732955903681690377998882038499470092453400748916257640501488510563314141992573250882286817352407459053866180642034662845694338400386823496563185664221362457851894843439705365082614359220653285052800751906334000698723288454227654466240011140570190301931122357632719033275258503935182047714841766010764632214069382579660602964184231995352310981811428980530707871661256260926759509418970021224649566130995825802676411575264295689037775857674060557127369881379685432291930869072749065675720647595081516460449973211035071920099349836074945813885239767788449030051892470053308048906746273036871919251738920141071153777908913021898541658119513188402271468288293408246833819954990709460114510017598873554406350044072275643892449218394225569069468466660333869360644718801813500285081977089623921689922204185138003164149106921903053243405307546841149889662566529697217181329051855403329741409045760789280950603184354320839342588593832348459938736210265795978675460906504449491132656307256451707333439200130425932724262464823848348296787445624028385464112471408499986690593095395244034885421580844176161027627954578726208600199909963055422192706751708210693468639072881081717288837393188012794669089175022406897622823484220002211676520484520241135615999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999027
Regeln
Sie dürfen nicht an einem beliebigen Stelle in Ihrem Programm, handelte ganze Zahlen größer als
18446744073709551615
( ), wenn Sie Ihre Sprache hat die Unterstützung für beliebige Genauigkeit Integer (oder Zahlentypen mit einer ausreichend hohen Genauigkeit zu ermöglichen Zahlen größer als diese Speicherung).264
Dies dient lediglich dazu, Lösungen zu verhindern, die alle möglichen Calvin-Zahlen (oder alle möglichen Werte von ) durchlaufen .
10n - n
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
9
sollte wahr sein. Fest.Antworten:
Schläger, 353
Akzeptiert eine Zahl aus stdin, output
#t
oder#f
.Ungolfed-Version:
Ich spiele normalerweise kein Code-Golf und Racket ist sicherlich nicht die am besten geeignete Sprache dafür, aber noch hatte niemand geantwortet, also dachte ich mir, ich würde es versuchen. ;)
quelle