लगातार डिजिटल उत्पाद सम कनवर्जेन्स


13

एक सकारात्मक पूर्णांक को देखते हुए n( उदाहरण:n=1234444999 )

  • लगातार अंकों में अलग:
    • [1, 2, 3, 4444, 999]
  • प्रत्येक रन का डिजिटल उत्पाद लें।
    • [1, 2, 3, 4*4*4*4, 9*9*9] = [1, 2, 3, 256, 729]
  • यह योग ...
    • 991
  • तब तक दोहराएं जब तक कि यह एक एकल संख्या में परिवर्तित न हो जाए:
    • 1234444999
    • 991
    • 82
    • 10
    • 1
  • अंतिम नंबर पर लौटें।

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

BASE CASES:
0 = 0
...
9 = 9

OTHER CASES:
1234444999                     = 1
222222222222222                = 8
111222333444555666777888999000 = 9
11122233344455566677788899     = 8
1112223334445                  = 6
14536                          = 1
99                             = 9

अनुरोधित उदाहरण:

334455553666333
9+16+625+3+216+27
896
8+9+6
23
2+3
**5**

जीतना?

यह , सबसे कम बाइट-काउंट विजेता है।


अन्ननन्ननन्ननृन्ननन्दन ... यह सैंडबॉक्स नहीं है। बकवास। अच्छा, ज्यादा नहीं अब मैं कर सकता हूँ, क्षमा करें सभी ._
मैजिक ऑक्टोपस Urn

11
ऐसे मामलों में परीक्षण करना अच्छा होगा, जहां एक ही तरह के अंक एक निरंतर चंक में नहीं होते हैं।
xnor

1
क्या हम इनपुट को अंकों की सूची के रूप में ले सकते हैं? कुछ भाषाएं पूर्णांकों का समर्थन नहीं कर सकतीं 11122233344455566677788899
22

@ETHproductions आप अपनी भाषा द्वारा अनुमत अधिकतम पूर्णांक इनपुट बता सकते हैं और आपके उत्तर मान्य होंगे यदि आप बाउंडिंग समझा सकते हैं।
मैजिक ऑक्टोपस Urn

4
क्या एक ही अंक evet 2 अलग-अलग रन में दिखाई देगा, जैसे 33445555666333:?
श्री Xcoder

जवाबों:


7

05AB1E , 7 6 5 बाइट्स

बाइट बचाने के लिए एमिगा को धन्यवाद !

vSγPO

05AB1E एन्कोडिंग का उपयोग करता है । इसे ऑनलाइन आज़माएं!


3
मैंने अभी पहली बार देखा कि आपका अवतार एक डॉग मेमे है।
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn और आपने अभी-अभी मुझे नोटिस किया ...
सोक्रेटिक फ़ीनिक्स

आप के gFसाथ बदल सकता है v
एमिगा जूल

@Emigna ओहोह बेशक! धन्यवाद! :)
अदनान

5

जेली, 9 बाइट्स

DŒgP€SµÐL

इसे ऑनलाइन आज़माएं

यहां देखिए यह कैसे काम करता है:

D  - input as a list of digits
Œg - group runs of equal elements
P€ - the product of each element
S  - the sum of the list
µ  - syntax stuff to separate the left from the right
ÐL - repeat until we get a result twice, then return that result.

P स्वचालित रूप से वेक्टराइज़ क्यों नहीं करता है? यह अजीब लगता है ...
फल

नहीं, P स्वतः सदिश हो जाता है, इसलिए आपको इसकी आवश्यकता नहीं है
फ्रूट जूल

नहीं, P वेक्टर
Zacharý

ओह, मैं देख रहा हूँ - Œgअसंगत है जब वहाँ केवल एक ही समूह है। उसके पीछे तर्क क्या है?
फल पकना

कोई सुराग नहीं!
जचारि

5

मैथेमेटिका, 55 42 बाइट्स

#//.i_:>Tr[Times@@@Split@IntegerDigits@i]&

-13 बाइट्स @ जुंगहवन मिन से । Thanx!

यदि कोई व्यक्ति इसे यादृच्छिक-अंक-जनरेटर के रूप में उपयोग करना चाहता है, तो
यहां पहले 100.000 संख्याओं का मिलान है

{{1, 17320}, {2, 4873}, {3, 10862}, {4, 11358}, {5, 10853}, {6, 9688}, {7, 11464}, {8, 10878}, { 9, 12704}}
या यदि आप जुआ करते हैं, तो अपना पैसा 2 पर न लगाएं!


5

जाप , 17 15 13 बाइट्स

e".+"_¬ò¦ x_×

इसे ऑनलाइन टेस्ट करें! एक स्ट्रिंग के रूप में इनपुट लेता है।

फिर भी इस जवाब से संतुष्ट नहीं ...

व्याख्या

e".+"_  ¬ ò¦  x_  ×
e".+"Z{Zq ò!= xZ{Zr*1}}

e".+"                     Repeatedly replace all matches of /.+/ (the entire string)
     Z{               }   Z with this function:
       Zq                   Split Z into chars.
          ò!=               Partition at inequality; that is, split into runs of equal items.
              xZ{    }      Take the sum of: for each item in Z:
                 Zr*1         the item reduced by multiplication (i.e. the product).
                          This procedure is repeated until the same result is yielded twice.
                          Implicit: output result of last expression

आप इसे केवल एक पूर्णांक के रूप में ले सकते हैं और अधिकतम स्वीकार्य इनपुट बता सकते हैं, क्षमा करें, मैंने उस प्रश्न के लिए मेरे डिफ़ॉल्ट उत्तर पर पोस्ट करने के बाद अपना उत्तर बदल दिया।
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn ओह, हे, धन्यवाद। वैसे भी दो बाइट्स बचाती है ...
ETHproductions

1
साथ ही, x_×संयुक्त I'm unsatisfiedने मुझे हंसाया। धन्यवाद ;)।
मैजिक ऑक्टोपस Urn

मैंने सोचा कि ßयहाँ जाने का रास्ता हो सकता है। मैं गलत था! (कम से कम साढ़े पांच बजे ', मैं एयरपोर्ट पर बस में बैठा था!)
झबरा

"अभी भी असंतुष्ट नहीं" ... तो ... आप आखिरकार संतुष्ट हैं?
ज़चारि


4

ब्रेकीलॉग , 8 बाइट्स

Ḋ|ẹḅ×ᵐ+↰

इसे ऑनलाइन आज़माएं!

व्याख्या

Ḋ          Input = Output = a digit
 |         Or
  ẹ        Split into a list of digits
   ḅ       Group consecutive equal elements together
    ×ᵐ     Map multiply
      +    Sum
       ↰   Recursive call

आप कभी भी ब्रेकीलॉग से यह उम्मीद नहीं करेंगे कि आप जेली को यहां से बाहर कर देंगे?
आउटगॉल्फ जूल

@EriktheOutgolfer जब ब्रेकीलॉग जैली को पीटता है, तो मेरी पहली धारणा यह है कि जेली का जवाब इष्टतम नहीं है
घातक

मेरा भी, सिवाय मैंने जैली में भी ऐसा करने की कोशिश की। बात यह है, ठीक है, 05AB1E अभी भी यह धड़कता है। :)
एरिक आउटोलॉफ़र

कुंआ। यह एक बाइट है, और जेली का जवाब मेरे द्वारा है, हाँ, मैं उम्मीद करता हूं कि ब्रैकीलॉग जेली को हरा देगा।
ज़ाचरी


2

PHP , 113 बाइट्स

for(;9<$a=&$argn;$a=$s){$s=0;preg_match_all('#(.)\1*#',$argn,$t);foreach($t[0]as$v)$s+=$v[0]**strlen($v);}echo$a;

इसे ऑनलाइन आज़माएं!


क्या आप पूर्णकालिक PHP डेवलपर हैं?
मैजिक ऑक्टोपस Urn

@MagicOctopusUrn नहीं मेरे पास कुछ वर्षों से अनुभव नहीं है
Jörg Hülsermann

2

भूसी , 8 बाइट्स

ωöṁΠgmis

पूर्णांक बनाता है और लौटाता है। इसे ऑनलाइन आज़माएं!

व्याख्या

आधार के लिए एक अंतर्निहित 10 अंक अच्छा होगा ...

ωöṁΠgmis
ω         Iterate until a fixed point is found
 ö        the composition of the following four functions:
       s   convert to string,
     mi    convert each digit to integer,
    g      group equal adjacent integers,
  ṁΠ       take product of each group and sum the results.

2

जावास्क्रिप्ट (ईएस 6), 77 73 67 65 बाइट्स

2 बाइट्स @CraigAyre की बदौलत सहेजे गए

f=s=>s>9?f(''+eval(s.replace(/(.)\1*/g,s=>'+'+[...s].join`*`))):s

कैसे?

इनपुट s को अंकगणितीय अभिव्यक्ति में बदल दिया गया है:

s.replace(/(.)\1*/g, s => '+' + [...s].join`*`)

उदाहरण के लिए, 1234444999बन जाता है +1+2+3+4*4*4*4+9*9*9

हम इस अभिव्यक्ति का मूल्यांकन करते हैं और परिणाम के साथ एक पुनरावर्ती कॉल करते हैं जब तक कि यह एक एकल दशमलव अंक के लिए उबला हुआ न हो।

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


क्या आप 9 के खिलाफ तुलना करके कुछ बाइट्स बचा सकते हैं ?:f=s=>s>9?f(''+eval(s.replace(/(.)\1*/g,s=>'+'+[...s].join`*`))):s
क्रेग आयरे

@ क्रेगएयर मेरे दृष्टिकोण की तरह लगता है वास्तव में एक बहुत अधिक जटिल था। धन्यवाद!
अरनुलद


2

हास्केल , 103 70 69 बाइट्स

import Data.List
until(<10)$sum.map product.group.map(read.pure).show

इसे ऑनलाइन आज़माएं!


1
आप का उपयोग करके बहुत छोटा कर सकते हैं until(<10)। साथ ही map(read.pure)पहले भी ले जाया जा सकता है show, जो कोष्ठक को बचाता है।
अर्जन जोहान्सन

हाँ, यह बहुत बेहतर है!
बरटावेल

1
आप $बाहरी कोष्ठक के बजाय उपयोग कर सकते हैं ।
अर्जन जोहानसन

1

आर , 114 104 बाइट्स

n=scan(,'');while(nchar(n)>1){n=el(strsplit(n,''));b=table(n);n=as.character(sum(strtoi(names(b))^b))};n

स्टड से पढ़ता है; उत्तर को एक स्ट्रिंग के रूप में देता है।

इसे ऑनलाइन आज़माएं!


आप pasteइसके बजाय उपयोग कर सकते हैं as.character। भूतपूर्व में इसके इनपुट को सहवर्ती बनाता है character;-)
Frédéric

1

MATL, 11 बाइट्स

`!UY'^sVtnq

इसे MATL ऑनलाइन पर आज़माएं

व्याख्या

        % Implicitly grab input as a string
`       % Do...while loop
  !U    % Convert the string to an array of numbers (the digits)
  Y'    % Perform run-length encoding
  ^     % Raise the digits to the power corresponding to the number of times they
        % occurred consecutively
  s     % Sum the result
  V     % Convert to a string
  tn    % Duplicate and determine the number of characters in the string
  q     % Subtract one, causes the loop to continue until it's a single digit
        % Implicit end of do...while loop and display


1

आर, 97 96 बाइट्स

a=scan(,"");while(nchar(a)>1){a=paste(sum(strtoi((b<-rle(el(strsplit(a,""))))$v)^strtoi(b$l)))}a

आर का उपयोग करके दूसरे उत्तर की तुलना में थोड़ा अलग दृष्टिकोण ।

यह उत्तर rleफ़ंक्शन का उपयोग करता है, जो compute[s] the lengths and values of runs of equal values in a vector

-1 बाइट्स @Giuseppe को धन्यवाद!


1
**के बराबर है^
Giuseppe

1

ब्रिंगोल्फ, 25 बाइट्स

!L1-Mv[RG(d&*)&+!L1-Mv>]R

डेनिस को लेटेस्ट वर्जन खींचने के लिए एक बार TIO लिंक जोड़ दूंगा, क्योंकि (...)लूप्स के अंदर लालची ऑपरेटर्स का इस्तेमाल करने से वर्तमान में IIO पर ब्रेक लग जाता है

व्याख्या

!L1-Mv[RG(d&*)&+!L1-Mv>]R  Implicit input from commandline args
!L1-M                      Push length of input minus 1 to stack2
     v                     Switch to stack2
      [.........!L1-Mv>]   While length of input > 1..
       RG                  Split into digit runs
         (d&*)             Product of digits of each item in stack
              &+           Sum stack
                        R  Return to stack1
                           Implicit output from stack

1

जाप , 19 बाइट्स

=ò¦ m¬®×Ãx)<A?U:ßUs

इसे ऑनलाइन आज़माएं!

स्पष्टीकरण:

=ò¦ m¬®×Ãx)<A?U:ßUs
=                    // Implicit U (input) =
 ò¦                  //   Split the input into an array of consecutive digit runs
    m¬               //   Split each inner array: ["1","22","333"] -> [["1"],["2","2"],["3","3","3"]]
      ®              //   Map; At each item:
       ×             //     Get the product of each run
        Ã            //   }
         x           //   Sum
           <A        // <10
             ?       // If true:
              U      //   return U
               :     // Else:
                ß    //   Run the program again; Pass:
                 Us  //     U, cast to a string
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.