क्या यह एक उम्मीदवार केल्विन नंबर है?


27

यह चुनौती हमारे लीजेंडरी चैलेंज राइटर ™, केल्विन के शौक के लिए एक श्रद्धांजलि है - जिसका नाम अब हेल्का होम्बा के नाम पर रखा गया है , जो जेनरेट डेनिस नंबर के समान ही है ।

केल्विन PPCG के लिए एक बहुत प्रभावशाली योगदानकर्ता है, जिसकी कुल मिलाकर 6 वीं ख्याति है और शायद निर्विवाद रूप से हम सभी में से सर्वश्रेष्ठ चुनौती लेखन कौशल है। हालांकि, निश्चित रूप से, इस चुनौती के लिए, हम उसकी उपयोगकर्ता आईडी पर ध्यान केंद्रित करेंगे।

26997 पहली बार में बहुत दिलचस्प नहीं लग सकता है। वास्तव में, यह कुछ मायनों में लगभग दिलचस्प है। उदाहरण के लिए, यहाँ 26997 mod <n>कुछ मूल्यों के लिए एक चार्ट है n:

n   |  26997 % n
----+-----------
3   |  0
4   |  1
5   |  2
6   |  3
7   |  5 :(
8   |  5
9   |  6
10  |  7

हालांकि, 26997 उन कुछ नंबरों में से एक है, जिनके द्वारा प्रतिनिधित्व किया जा सकता है , जहां एक पूर्णांक> 0 है।(n * 10)n - nn

इस तरह से व्यक्त की जा सकने वाली पहली कुछ संख्याएँ हैं, जिन्हें हम बाद में केल्विन नंबर कहेंगे :

9
398
26997
2559996
312499995
46655999994
8235429999993
1677721599999992
387420488999999991
99999999999999999990
28531167061099999999989
8916100448255999999999988
3028751065922529999999999987
1111200682555801599999999999986
437893890380859374999999999999985
184467440737095516159999999999999984
82724026188633676417699999999999999983
39346408075296537575423999999999999999982
19784196556603135891239789999999999999999981
10485759999999999999999999999999999999999999980

इन केल्विन नंबरों में कुछ दिलचस्प गुण हैं। अधिक पैटर्न तब सामने आते हैं जब हम उन्हें सही-संरेखित करते हैं और सभी को हाइलाइट करते हैं 9:

स्क्रीनशॉट

इस चुनौती के लिए हमारी रुचि के हैं:

  • भले ही n, हर केल्विन संख्या के साथ समाप्त होता है ।10n - n

    तो, केल्विन (1) के साथ समाप्त होता है 9, केल्विन (2) के साथ समाप्त होता है 98, और पैटर्न जारी है 997, 9996और 99995, आदि, प्रत्येक क्रमिक केल्विन संख्या की गिनती के साथ और 9शुरुआत में एक अतिरिक्त जोड़ रहा है ।

  • मूल्यों के लिए nजहां n % 10 == 0(अर्थात n10 से विभाज्य है), केल्विन (एन) के साथ समाप्त होता है ।102n - n

    यही है, पैटर्न सामान्य रूप से दोगुने के लिए विस्तार करता है, 9शुरुआत में बराबर संख्या में अतिरिक्त संख्या के साथ n

  • जब nकी एक शक्ति है 10( 10, 100, 1000, आदि), पैटर्न फैली आगे-हर भी एकल अंक एक या तो है 9या एक 0

    यह पैटर्न निम्न है: nines, और zeroes। यह एक चार्ट में समझने में आसान है (आपके समाधान को वैसे भी केवल 10000 तक संख्याओं को संभालना होगा, इसलिए आपको इसकी आवश्यकता है:)(n + 1) * 10n - nn

    n      |  Calvin(n)
    -------+-----------------------
    10     |  19 nines, 1 zero
    100    |  298 nines, 2 zeroes
    1000   |  3997 nines, 3 zeroes
    10000  |  49998 nines, 4 zeroes
    

    नाइन की संख्या यहां तक कि खुद केल्विन नंबरों के कई गुणों को प्रदर्शित करती है, लेकिन इस चुनौती के लिए बहुत अधिक विवरण है।

चुनौती

केल्विन संख्याएँ बहुत बड़ी हैं, बहुत जल्दी, "एनटी केल्विन नंबर प्राप्त करने के लिए चुनौती के बिना भाषाओं में मनमाने ढंग से सटीक पूर्णांक के बिना संभव है। इसलिए, चुनौती यह निर्धारित करने के लिए है कि क्या कोई संख्या उपरोक्त पैटर्न को फिट करती है - चाहे एक संख्या "उम्मीदवार केल्विन नंबर" है या नहीं।

यहां एक संख्या के लिए एक उम्मीदवार केल्विन नंबर माना जाता है (उसके बाद संक्षेप में CCN के रूप में संदर्भित) के मानदंड हैं :

  • यह एक संख्या के साथ समाप्त होता है जो पूर्णांक के लिए पैटर्न को फिट करता है ।10n - nn

    तो, CCN होने के लिए, एक संख्या को 9 या 98, या 997, 9996, 99995, आदि के साथ समाप्त होना चाहिए।

  • यदि अंतिम अंक है 0, तो उसे पिछले बिंदु के समान ही समाप्त होना चाहिए ।102n - nn

    इसका मतलब यह है कि 12312312399999999999999999999999999999999999980CCN नहीं है, लेकिन 10485759999999999999999999999999999999999999980यह (वास्तव में सही है)।

  • यदि nपिछले दो चरणों का मान 10 की शक्ति है, तो पूरी संख्या को ऊपर वर्णित तीसरे पैटर्न में फिट होना चाहिए।

इनपुट आउटपुट

इनपुट एक स्ट्रिंग के रूप में प्रदान किया जाएगा, और यह हमेशा एक संख्या का प्रतिनिधित्व करेगा Calvin(10000) + 10000जो इससे कम है (जिसे भी व्यक्त किया जा सकता है )। (स्पष्ट करने के लिए, सबसे बड़ा संभव इनपुट 50000 nines है, और सबसे कम संभव इनपुट है ।)10500001

आउटपुट एक सत्य मान होना चाहिए यदि इनपुट एक संख्या का प्रतिनिधित्व करता है जो एक CCN है, और एक मिथ्या मूल्य अन्यथा। इन शर्तों की परिभाषा के लिए , मेटा देखें

परीक्षण के मामलों

इनपुट जो कि एक सत्य मूल्य में परिणत होने चाहिए:

9
26997
99999999999999999990
437893890380859374999999999999985
10485759999999999999999999999999999999999999980
999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999900
259232147948794494594485446818048254863271026096382337884099237269509380022108148908589797968903058274437782549758243999867043174477180579595714249308002763427793979644775390624999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999850
1027092382693614216458468213549848274267264533712122209400214436472662418869004625362768700557725707157332451380426829473630485959339004149867738722096608953864534215649211386152032635755501464142277508289403434891444020975243742942368836579910208098242623061684967794815600266752580663281483595687307649904776800899000484103534573979334062832465904049046104660220505973505050538180250643437654409375728443182380726453925959886901573523090619465866810938078629561306599174923972607310649219442207992951278588892681161967770532314854195892941913447519131828356181219857012229150315613569162930098836696593474888020746503116685472977764615483225628639443918309216648893055765917642528801571387940219884056021782642758517893124803355573565644666880920219871370649806723296262307899148031362558110611562055614190049332906933360406981359187305353360484377948591528385990255894034369523166777375785900198782250651053530165824984161319460372145229568890321167955690544235365954748429659526071133879976348254667755220636244075595290123987745560038255541751251200827018722242010925729483977388235141539109139120069464709993781356334885359200734157439642935779132120725231008699003342908280056975158266782782304550273268246184659474285971272532354920744956064671379745219778013465792544241259691493098443741845166419905920702654683993902052727208789915748213660571390107102976665776293366616518962323688316843422737162297255648351087284877987537325761187239807598009767936409247247417410607537333841650998421607775989879490006136112078031237742552602618996017404602674987181629319060214150458746352191115606789019875790921190573561400752476956787515392210098071407806221412149732955903681690377998882038499470092453400748916257640501488510563314141992573250882286817352407459053866180642034662845694338400386823496563185664221362457851894843439705365082614359220653285052800751906334000698723288454227654466240011140570190301931122357632719033275258503935182047714841766010764632214069382579660602964184231995352310981811428980530707871661256260926759509418970021224649566130995825802676411575264295689037775857674060557127369881379685432291930869072749065675720647595081516460449973211035071920099349836074945813885239767788449030051892470053308048906746273036871919251738920141071153777908913021898541658119513188402271468288293408246833819954990709460114510017598873554406350044072275643892449218394225569069468466660333869360644718801813500285081977089623921689922204185138003164149106921903053243405307546841149889662566529697217181329051855403329741409045760789280950603184354320839342588593832348459938736210265795978675460906504449491132656307256451707333439200130425932724262464823848348296787445624028385464112471408499986690593095395244034885421580844176161027627954578726208600199909963055422192706751708210693468639072881081717288837393188012794669089175022406897622823484220002211676520484520241135615999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999028

ऐसे इनपुट जिनके परिणामस्वरूप गलत मूल्य होना चाहिए:

1
26897
79999999999999999990
437893890380859374299999999999985
12312312399999999999999999999999999999999999980
999998999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999900
259232147948794494594485446818048254863271026096382337884099237269509380022108148908589797968903058274437782549758243999867043174477180579595714249308002763427793979644775390624999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999911111
1027092382693614216458468213549848274267264533712122209400214436472662418869004625362768700557725707157332451380426829473630485959339004149867738722096608953864534215649211386152032635755501464142277508289403434891444020975243742942368836579910208098242623061684967794815600266752580663281483595687307649904776800899000484103534573979334062832465904049046104660220505973505050538180250643437654409375728443182380726453925959886901573523090619465866810938078629561306599174923972607310649219442207992951278588892681161967770532314854195892941913447519131828356181219857012229150315613569162930098836696593474888020746503116685472977764615483225628639443918309216648893055765917642528801571387940219884056021782642758517893124803355573565644666880920219871370649806723296262307899148031362558110611562055614190049332906933360406981359187305353360484377948591528385990255894034369523166777375785900198782250651053530165824984161319460372145229568890321167955690544235365954748429659526071133879976348254667755220636244075595290123987745560038255541751251200827018722242010925729483977388235141539109139120069464709993781356334885359200734157439642935779132120725231008699003342908280056975158266782782304550273268246184659474285971272532354920744956064671379745219778013465792544241259691493098443741845166419905920702654683993902052727208789915748213660571390107102976665776293366616518962323688316843422737162297255648351087284877987537325761187239807598009767936409247247417410607537333841650998421607775989879490006136112078031237742552602618996017404602674987181629319060214150458746352191115606789019875790921190573561400752476956787515392210098071407806221412149732955903681690377998882038499470092453400748916257640501488510563314141992573250882286817352407459053866180642034662845694338400386823496563185664221362457851894843439705365082614359220653285052800751906334000698723288454227654466240011140570190301931122357632719033275258503935182047714841766010764632214069382579660602964184231995352310981811428980530707871661256260926759509418970021224649566130995825802676411575264295689037775857674060557127369881379685432291930869072749065675720647595081516460449973211035071920099349836074945813885239767788449030051892470053308048906746273036871919251738920141071153777908913021898541658119513188402271468288293408246833819954990709460114510017598873554406350044072275643892449218394225569069468466660333869360644718801813500285081977089623921689922204185138003164149106921903053243405307546841149889662566529697217181329051855403329741409045760789280950603184354320839342588593832348459938736210265795978675460906504449491132656307256451707333439200130425932724262464823848348296787445624028385464112471408499986690593095395244034885421580844176161027627954578726208600199909963055422192706751708210693468639072881081717288837393188012794669089175022406897622823484220002211676520484520241135615999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999027

नियम

  • आप अपने कार्यक्रम में किसी भी बिंदु पर, पूर्णांक से बड़ा संभाल नहीं कर सकते 18446744073709551615( ), यदि आपकी भाषा में मनमाना-सटीक पूर्णांक (या इससे अधिक संख्या के साथ उच्च संख्या में संचय करने के लिए संख्याओं की अनुमति है)।264

    यह बस उन समाधानों को रोकने के लिए है जो सभी संभव केल्विन नंबरों (या सभी संभावित मूल्यों ) के माध्यम से लूप करते हैं ।10n - n

  • यह , इसलिए बाइट्स में सबसे छोटा कोड जीत जाएगा।


"यदि पिछले दो चरणों में n का मान 10 की शक्ति है, तो पूरी संख्या को ऊपर वर्णित तीसरे पैटर्न में फिट होना चाहिए।" 'तीसरा पैटर्न' किससे संबंधित है?
feersum

@ Faersum तीन चीजों की बुलेटेड सूची है - यह अंतिम है।
दरवाज़े

मुझे समझ में नहीं आता है कि दूसरे-से-अंतिम झूठा परीक्षण-मामला क्यों झूठा है। यह किस नियम का उल्लंघन करता है।
एलेक्सिस किंग

@AlexisKing अच्छा पकड़; जो कुछ भी समाप्त 9होना चाहिए वह सत्य है। फिक्स्ड।
दरवाज़े

@Doorknob यहां तक ​​कि परिवर्तन के साथ, संख्या अभी भी मानदंड फिट बैठती है। 845 में समाप्त होने वाली संख्या में 152 नाइन नहीं होना चाहिए? ऐसा लगता है कि पर्याप्त से अधिक है। क्या वहाँ आधा नंबर होना चाहिए था?
एलेक्सिस किंग

जवाबों:


8

रैकेट, 353

(require srfi/13)(let([s(~a(read))])(for/or([n(range 1 999)])(and(let*([y(string-length(~a n))])(string-suffix?(string-append(make-string(-(if(=(modulo n 10)0)(* 2 n)n)y)#\9)(~r #:min-width y #:pad-string"0"(-(expt 10 y)n)))s))(let([n(inexact->exact(/(log n)(log 10)))])(or(not(integer? n))(string-prefix?(make-string(-(*(+ 1 n)(expt 10 n))n)#\9)s))))))

स्टड, आउटपुट #tया से एक संख्या को स्वीकार करता है #f

Ungolfed संस्करण:

(require srfi/13)

(define (calvin? str)
  (for/or ([n (in-range 1 10001)])
    (and (10^n-n$? n str)
         (or (not (integer? (/ (log n) (log 10))))
             (expt-of-ten-check? n str)))))

(define (10^n-n$? n str)
  (let* ([div-by-ten? (zero? (modulo n 10))]
         [digits (string-length (~a n))]
         [nines (- (if div-by-ten? (* 2 n) n) digits)]
         [suffix (string-append (make-string nines #\9)
                                (~r #:min-width digits #:pad-string "0" (- (expt 10 digits) n)))])
    (string-suffix? suffix str)))

(define (expt-of-ten-check? n str)
  (let* ([n (inexact->exact (/ (log n) (log 10)))]
         [nines (- (* (add1 n) (expt 10 n)) n)]
         [prefix (make-string nines #\9)])
    (string-prefix? prefix str)))

मैं आमतौर पर कोड गोल्फ नहीं करता हूं, और रैकेट निश्चित रूप से इसके लिए सबसे उपयुक्त भाषा नहीं है, लेकिन किसी ने अभी तक उत्तर नहीं दिया था, इसलिए मुझे लगा कि मैं इसे एक शॉट दूंगा। ;)


वे शायद मेरे जवाब का इंतजार कर रहे थे, लेकिन मेरे पोस्ट इतिहास को देखते हुए यह शायद सबसे अच्छा है कि आप इंतजार नहीं करते;)
केल्विन के शौक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.