Thử thách này là một sự tôn vinh dành cho Nhà văn Thử thách Huyền thoại ™ của chúng tôi, Sở thích của Calvin - giờ được đổi tên thành Helka Homba -, với tinh thần tương tự như Tạo số Dennis .
Calvin là một người đóng góp khá ấn tượng cho PPCG, với danh tiếng cao thứ 6 nói chung và có lẽ không thể chối cãi là kỹ năng viết thử thách tốt nhất trong số chúng ta. Tuy nhiên, tất nhiên, đối với thử thách này, chúng tôi sẽ tập trung vào ID người dùng của anh ấy.
26997 ban đầu có thể trông không thú vị lắm. Trên thực tế, nó gần như
thú vị theo một số cách. Ví dụ: đây là biểu đồ 26997 mod <n>
cho các giá trị nhất định của n
:
n | 26997 % n
----+-----------
3 | 0
4 | 1
5 | 2
6 | 3
7 | 5 :(
8 | 5
9 | 6
10 | 7
Tuy nhiên, 26997 là một trong số ít các số có thể được đại diện bởi , trong đó(n * 10)n - n
n
số nguyên> 0.
Dưới đây là một vài số đầu tiên có thể được biểu thị theo cách này, từ đó chúng ta sẽ gọi Calvin Numbers :
9
398
26997
2559996
312499995
46655999994
8235429999993
1677721599999992
387420488999999991
99999999999999999990
28531167061099999999989
8916100448255999999999988
3028751065922529999999999987
1111200682555801599999999999986
437893890380859374999999999999985
184467440737095516159999999999999984
82724026188633676417699999999999999983
39346408075296537575423999999999999999982
19784196556603135891239789999999999999999981
10485759999999999999999999999999999999999999980
Những số Calvin có một số tính chất thú vị. Nhiều mẫu xuất hiện hơn khi chúng ta căn chỉnh chúng và tô sáng tất cả các 9
s:
Những điều chúng tôi quan tâm cho thử thách này là:
Bất kể
n
, mọi số Calvin đều kết thúc bằng10n - n
.Vì vậy, Calvin (1) kết thúc với
9
, Calvin (2) đầu với98
, và mô hình tiếp tục997
,9996
,99995
vv, với mỗi liên tiếp Số Calvin đếm ngược và bổ sung thêm9
để bắt đầu.Đối với các giá trị trong
n
đón % 10 == 0
(tứcn
là chia hết cho 10), Calvin (n) kết thúc bằng .102n - n
Đó là, mẫu mở rộng gấp đôi số chữ số so với bình thường, với số
9
s thêm vào đầu bằngn
.Khi
n
là một sức mạnh của10
(10
,100
,1000
, vv), mô hình mở rộng hơn nữa-tất cả các chữ số duy nhất là hoặc là một9
hoặc một0
.Mẫu này là như sau: số không và số không. Điều này dễ hiểu hơn trong biểu đồ (giải pháp của bạn sẽ chỉ phải xử lý số lượng lên tới 10000, vì vậy đây là tất cả những gì bạn cần):
(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
Số lượng dây thậm chí thể hiện một số tính chất của Calvin Numbers , nhưng đó là quá nhiều chi tiết cho thách thức này.
Thử thách
Số Calvin trở nên quá lớn, quá nhanh, để "lấy số Calvin thứ n thách thức trở nên khả thi trong các ngôn ngữ mà không cần các số nguyên chính xác tùy ý. Do đó, thách thức là xác định xem một số có phù hợp với các mẫu trên hay không một số có phải là "Số Calvin ứng cử viên" hay không.
Dưới đây là các tiêu chí để một số được coi là ứng cử viên Số Calvin (sau đây gọi tắt là CCN):
Nó kết thúc bằng một số phù hợp với mẫu cho một số nguyên
10n - n
n
.Vì vậy, để trở thành CCN, một số phải kết thúc bằng 9, hoặc 98 hoặc 997, 9996, 99995, v.v.
Nếu chữ số cuối cùng là
0
, nó cũng phải kết thúc bằng , cho cùng102n - n
n
như ở điểm trước.Điều này có nghĩa là đó
12312312399999999999999999999999999999999999980
không phải là CCN, nhưng10485759999999999999999999999999999999999999980
thực tế (đó là chính xác).Nếu giá trị của
n
hai bước trước là lũy thừa 10, toàn bộ số phải phù hợp với mẫu thứ ba được mô tả ở trên.
Đầu ra đầu vào
Đầu vào sẽ được cung cấp dưới dạng một chuỗi và nó sẽ luôn đại diện cho một số nhỏ hơn Calvin(10000) + 10000
(cũng có thể được biểu thị dưới dạng
). (Để làm rõ, đầu vào lớn nhất có thể là 50000 nines và đầu vào ít nhất có thể là .)1050000
1
Đầu ra phải là một giá trị trung thực nếu đầu vào đại diện cho một số là CCN và nếu không thì giá trị giả. Đối với các định nghĩa của các điều khoản này, xem meta .
Các trường hợp thử nghiệm
Các đầu vào sẽ dẫn đến một giá trị trung thực:
9
26997
99999999999999999990
437893890380859374999999999999985
10485759999999999999999999999999999999999999980
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999900
259232147948794494594485446818048254863271026096382337884099237269509380022108148908589797968903058274437782549758243999867043174477180579595714249308002763427793979644775390624999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999850
1027092382693614216458468213549848274267264533712122209400214436472662418869004625362768700557725707157332451380426829473630485959339004149867738722096608953864534215649211386152032635755501464142277508289403434891444020975243742942368836579910208098242623061684967794815600266752580663281483595687307649904776800899000484103534573979334062832465904049046104660220505973505050538180250643437654409375728443182380726453925959886901573523090619465866810938078629561306599174923972607310649219442207992951278588892681161967770532314854195892941913447519131828356181219857012229150315613569162930098836696593474888020746503116685472977764615483225628639443918309216648893055765917642528801571387940219884056021782642758517893124803355573565644666880920219871370649806723296262307899148031362558110611562055614190049332906933360406981359187305353360484377948591528385990255894034369523166777375785900198782250651053530165824984161319460372145229568890321167955690544235365954748429659526071133879976348254667755220636244075595290123987745560038255541751251200827018722242010925729483977388235141539109139120069464709993781356334885359200734157439642935779132120725231008699003342908280056975158266782782304550273268246184659474285971272532354920744956064671379745219778013465792544241259691493098443741845166419905920702654683993902052727208789915748213660571390107102976665776293366616518962323688316843422737162297255648351087284877987537325761187239807598009767936409247247417410607537333841650998421607775989879490006136112078031237742552602618996017404602674987181629319060214150458746352191115606789019875790921190573561400752476956787515392210098071407806221412149732955903681690377998882038499470092453400748916257640501488510563314141992573250882286817352407459053866180642034662845694338400386823496563185664221362457851894843439705365082614359220653285052800751906334000698723288454227654466240011140570190301931122357632719033275258503935182047714841766010764632214069382579660602964184231995352310981811428980530707871661256260926759509418970021224649566130995825802676411575264295689037775857674060557127369881379685432291930869072749065675720647595081516460449973211035071920099349836074945813885239767788449030051892470053308048906746273036871919251738920141071153777908913021898541658119513188402271468288293408246833819954990709460114510017598873554406350044072275643892449218394225569069468466660333869360644718801813500285081977089623921689922204185138003164149106921903053243405307546841149889662566529697217181329051855403329741409045760789280950603184354320839342588593832348459938736210265795978675460906504449491132656307256451707333439200130425932724262464823848348296787445624028385464112471408499986690593095395244034885421580844176161027627954578726208600199909963055422192706751708210693468639072881081717288837393188012794669089175022406897622823484220002211676520484520241135615999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999028
Các đầu vào sẽ dẫn đến một giá trị sai lệch:
1
26897
79999999999999999990
437893890380859374299999999999985
12312312399999999999999999999999999999999999980
999998999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999900
259232147948794494594485446818048254863271026096382337884099237269509380022108148908589797968903058274437782549758243999867043174477180579595714249308002763427793979644775390624999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999911111
1027092382693614216458468213549848274267264533712122209400214436472662418869004625362768700557725707157332451380426829473630485959339004149867738722096608953864534215649211386152032635755501464142277508289403434891444020975243742942368836579910208098242623061684967794815600266752580663281483595687307649904776800899000484103534573979334062832465904049046104660220505973505050538180250643437654409375728443182380726453925959886901573523090619465866810938078629561306599174923972607310649219442207992951278588892681161967770532314854195892941913447519131828356181219857012229150315613569162930098836696593474888020746503116685472977764615483225628639443918309216648893055765917642528801571387940219884056021782642758517893124803355573565644666880920219871370649806723296262307899148031362558110611562055614190049332906933360406981359187305353360484377948591528385990255894034369523166777375785900198782250651053530165824984161319460372145229568890321167955690544235365954748429659526071133879976348254667755220636244075595290123987745560038255541751251200827018722242010925729483977388235141539109139120069464709993781356334885359200734157439642935779132120725231008699003342908280056975158266782782304550273268246184659474285971272532354920744956064671379745219778013465792544241259691493098443741845166419905920702654683993902052727208789915748213660571390107102976665776293366616518962323688316843422737162297255648351087284877987537325761187239807598009767936409247247417410607537333841650998421607775989879490006136112078031237742552602618996017404602674987181629319060214150458746352191115606789019875790921190573561400752476956787515392210098071407806221412149732955903681690377998882038499470092453400748916257640501488510563314141992573250882286817352407459053866180642034662845694338400386823496563185664221362457851894843439705365082614359220653285052800751906334000698723288454227654466240011140570190301931122357632719033275258503935182047714841766010764632214069382579660602964184231995352310981811428980530707871661256260926759509418970021224649566130995825802676411575264295689037775857674060557127369881379685432291930869072749065675720647595081516460449973211035071920099349836074945813885239767788449030051892470053308048906746273036871919251738920141071153777908913021898541658119513188402271468288293408246833819954990709460114510017598873554406350044072275643892449218394225569069468466660333869360644718801813500285081977089623921689922204185138003164149106921903053243405307546841149889662566529697217181329051855403329741409045760789280950603184354320839342588593832348459938736210265795978675460906504449491132656307256451707333439200130425932724262464823848348296787445624028385464112471408499986690593095395244034885421580844176161027627954578726208600199909963055422192706751708210693468639072881081717288837393188012794669089175022406897622823484220002211676520484520241135615999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999027
Quy tắc
Bạn có thể không , tại bất kỳ điểm nào trong chương trình của bạn, xử lý số nguyên lớn hơn
18446744073709551615
(264
), nếu ngôn ngữ của bạn có hỗ trợ cho số nguyên tùy ý chính xác (hoặc các loại số với độ chính xác cao, đủ để cho phép lưu trữ số lượng lớn hơn này).Điều này chỉ đơn giản là để ngăn các giải pháp lặp qua tất cả các Số Calvin có thể (hoặc tất cả các giá trị có thể có ).
10n - n
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ giành chiến thắng.
9
nên được trung thực. Đã sửa.