अजीब सा जोड़


19

चुनौती

दो प्राकृतिक संख्याओं के अजीब योग की गणना करें (इसे चंद्र योग भी कहा जाता है):

यह देखते हुए A=... a2 a1 a0और B=... b2 b1 b0दो प्राकृतिक संख्याओं को दशमलव आधार में लिखा गया है, अजीब योग को परिभाषित किया गया है, अधिकतम ऑपरेशन के आधार पर , इस प्रकार है: A+B=... max(a2,b2) max(a1,b1) max(a0,b0)

   ...         a2         a1         a0
 + ...         b2         b1         b0
 ----------------------------------------
   ...  max(a2,b2) max(a1,b1) max(a0,b0)

इनपुट

दो प्राकृतिक संख्याएँ

सभी निम्नलिखित की अनुमति है:

  • शून्य-गद्देदार तार (एक ही लंबाई)
  • बायां-अंतरिक्ष-गद्देदार तार
  • राइट-स्पेस-पेड स्ट्रिंग्स
  • दो गद्देदार तारों की सरणी
  • 2 डी अंतरिक्ष गद्देदार चार सरणी

उत्पादन

एक प्राकृतिक संख्या

उदाहरण

1999+2018-->2999
17210+701-->17711
32+17-->37
308+250-->358
308+25-->328

नियम

  • इनपुट और आउटपुट किसी भी सुविधाजनक प्रारूप में दिए जा सकते हैं (अपनी भाषा / समाधान के लिए सबसे उपयुक्त प्रारूप चुनें)।
  • नकारात्मक मान या अमान्य इनपुट को संभालने की आवश्यकता नहीं है
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • यदि संभव हो, तो कृपया ऑनलाइन परीक्षण वातावरण का लिंक शामिल करें ताकि अन्य लोग आपके कोड को आज़मा सकें!
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।


3
क्या हम इनपुट को शून्य-गद्देदार तार (समान लंबाई) के रूप में ले सकते हैं?
TFeld

1
मुझे लगता है कि यह थोड़ा बहुत तुच्छ है। अजीब जो पहले नहीं पूछा गया है
विंडमिल कुकीज़

1
क्या हमारे पास समान लंबाई में संख्याएं हो सकती हैं? 17210 701 के बजाय 17210 00701?
विंडमिल कुकीज़

7
मैं यह देखने में विफल हूं कि इनपुट स्वरूपों की वास्तव में क्या अनुमति है। इस चुनौती में इनपुट प्रारूप बहुत महत्वपूर्ण है, क्योंकि कुछ प्रारूप बहुत आसान प्रसंस्करण की अनुमति देते हैं। निम्नलिखित में से क्या अनुमति है? 1) शून्य-गद्देदार तार (एक ही लंबाई) 2) बायां-अंतरिक्ष-गद्देदार तार 3) सही-स्थान-गद्देदार तार। 4) दो गद्देदार तारों की सरणी। 5) 2 डी अंतरिक्ष गद्देदार चार सरणी। अब के लिए बंद और नीचा दिखाने के लिए मतदान; हल होने पर मैं खुशी से अपने वोट निकाल दूंगा
लुइस मेंडू

जवाबों:




7

आर , 68 65 बाइट्स

function(x)apply(outer(x,10^(max(nchar(x)):1-1),`%/%`)%%10,2,max)

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

पूर्णांक के रूप में इनपुट, अंकों की सूची के रूप में आउटपुट।

यदि अंकों की शून्य-पेडिंग सूचियों की अनुमति थी, तो बस pmaxपर्याप्त होगा।


6

MATL , 2 बाइट्स

X>

अपनी भाषा / समाधान के लिए सबसे उपयुक्त प्रारूप चुनें

इनपुट प्रारूप यह है: दो पंक्तियों की 2 डी चार सरणी, प्रत्येक पंक्ति के अनुरूप, रिक्त स्थान के साथ कम संख्या वाली बाईं-गद्देदार। उदाहरण के लिए

17210
  701

जिसमें MATL को परिभाषित किया गया है

['17210'; '  701']

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

व्याख्या

      % Implicit input: 2D char array with two rows 
X>    % Take maximum of (code points of) each column
      % Implicit display

5

पायथन 2 , 73 60 56 बाइट्स

lambda a,b:map(max,zip(a.rjust(len(b)),b.rjust(len(a))))

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

इनपुट को दो स्ट्रिंग्स के रूप में लेता है, और अंकों की सूची लौटाता है


वैकल्पिक:

दो पूर्णांकों के रूप में इनपुट लेता है; एक ही आउटपुट

पायथन 2 , 60 59 बाइट्स

lambda*i:map(max,zip(*['%*d'%(len(`max(i)`),v)for v in i]))

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


5

जावा 10, 78 57 बाइट्स

a->b->{for(int i=a.length;i-->0;)if(a[i]<b[i])a[i]=b[i];}

दो अंतरिक्ष-पेड चरित्र सरणियों के रूप में इनपुट।

21 बाइट्स ( @ OlivierGrégoire के लिए धन्यवाद ) को बचाने के लिए एक नया लौटने के बजाय पहले इनपुट-सरणी को संशोधित करता है ।

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

स्पष्टीकरण:

a->b->{            // Method with two char-array parameters and String return-type
  for(int i=a.length;i-->0;)
                   //  Loop `i` in the range (length, 0]:
    if(a[i]<b[i])  //   If the `i`'th character in input `a` is smaller than in input `b`:
      a[i]=b[i];}  //    Change the `i`'th character in `a` to the `i`'th character of `b`

1
a->b->{for(int i=a.length;i-->0;)if(a[i]<b[i])a[i]=b[i];}( 57 बाइट्स )। aबहुत अधिक बाइट्स प्राप्त करने के लिए आउटपुट के रूप में पुन: उपयोग करें ।
ओलिवियर ग्रेजायर

@ OlivierGrégoire आह, विश्वास नहीं कर सकता कि मैंने ऐसा नहीं सोचा था। धन्यवाद! : डी
केविन क्रूज़सेन 12

4

जे , 14 12 बाइट्स

-2 बाइट्स जोनाह को धन्यवाद

(>./@,:)&.|.

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

इनपुट और आउटपुट अंकों की सूची के रूप में


1
12 बाइट्स: (>./@,:)&.|.इसे ऑनलाइन आज़माएं!
योना

1
@ जोनाह! धन्यवाद!
गैलेन इवानोव

1
यदि आप एक चुनौती की तलाश में हैं, तो देखें कि क्या आप इस राक्षसी में सुधार कर सकते हैं: codegolf.stackexchange.com/a/175968/15469
योना

4

Japt, 9 8 7 बाइट्स

अंक सरणियों के एक सरणी के रूप में इनपुट लेता है।

mÔÕÔËrw

कोशिश करो

m            :Map
 Ô           :  Reverse
  Õ          :Transpose
   Ô         :Reverse
    Ë        :Map
     r       :  Reduce by
      w      :  Maximum

यदि इनपुट के रूप में शून्य-गद्देदार सरणियों को लेने की अनुमति है (यह वर्तमान में "सुविधाजनक प्रारूप" के अंतर्गत आएगा, लेकिन मुझे संदेह है कि यह चुनौती देने वाले का इरादा नहीं है) तो यह 3 बाइट्स हो सकता है।

íwV

कोशिश करो

í       :Interleave the first input
  V     :With the second
 w      :Reduce each pair by maximum

1
यहाँ एक अलग रणनीति और सरल इनपुट प्रारूप के साथ एक और 8 बाइट समाधान है। शायद आप उस से एक बाइट दाढ़ी कर सकते हैं?
कामिल दकरी

@KamilDrakari: Uncanny - मैं ठीक उसी समाधान के साथ अपडेट कर रहा था!
झबरा

दिलचस्प बात यह है कि "ट्रांसपोज़" और "कम" स्टेप्स को अलग करने वाला संस्करण भी बेहतर शॉर्टकट्स के कारण 8 बाइट्स है
कामिल दकरी

@KamilDrakari, ओह, हमारे पास yअभी के लिए एक शॉर्टकट है ? मैं नहीं जानता था कि। यहाँ एक और तरीका है , 8 बाइट्स भी।
झबरा

ओह, यह एक साफ चाल है '। मुझे नहीं पता कि क्या कभी बाइट्स बचेंगे, लेकिन यह निश्चित रूप से अच्छा है।
कामिल दकरी


4

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

-3 Emigna को
धन्यवाद -1 Shaggy को धन्यवाद

íζ€àR

अंकों की सूची की सूची के रूप में इनपुट लेता है

í      # Reverse both inputs
 ζ     # Zip
  ۈ   # Keep the bigger digits
    R  # Reverse

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों का प्रयास करें


€Rहो सकता है í। इसके अलावा, मैं आप की जरूरत नहीं लगता है €þके रूप मेंnumber > space
Emigna

@Emigna धन्यवाद! मुझे लगा कि मैंने इसके बिना कोशिश की €þऔर यह काम नहीं किया, लेकिन अब यह करता है ...
रिले

क्या आपको Jअंत में आवश्यकता है ?
झबरा

@ शैगी नहीं, मुझे लगता है कि मैं नहीं। धन्यवाद!
रिले

यह लंगड़ा है, लेकिन नियम 2 डी स्पेस-पैडेड चार सरणी लेकर 3 बाइट समाधान की अनुमति देते हैं ..
केविन क्रूज़सेन

4

पर्ल 6 , 15 बाइट्स

{[~] [Zmax] $_}

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

वर्णों की अंतरिक्ष गद्देदार सरणियों की सूची के रूप में इनपुट लेता है, हालांकि इस चुनौती के लिए लैक्स इनपुट प्रारूप इसे उबाऊ बनाता है। वैकल्पिक रूप से, यहां वह कार्यक्रम है जो इसके बजाय दो पूर्णांकों की सूची लेता है:

पर्ल 6 , 41 बाइट्स

{+[~] [Zmax] $_>>.fmt("%{.max}d")>>.comb}

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

यदि आपके पास व्हाट्सएप की एक बड़ी मात्रा में कोई आपत्ति नहीं है, तो आप +सामने से भी हटा सकते हैं ।

स्पष्टीकरण:

{                                       }  # Anonymous code block
             $_>>    # Map each integer to 
                 .fmt("%{.max}d") # The number padded by the max of the list spaces
                                 >>.comb   # And split each to list of characters
      [Zmax]  # Get the max of each digit at each index
              # This works because space is coerced to 0
              # Otherwise we would have to add a 0 to the formatting string
  [~]   # Join the list of digits and spaces
 +      # And coerce the string to a number to get rid of leading whitespace

3

हास्केल , 40 बाइट्स

a#b=zipWith max(p b++a)$p a++b
p=(' '<$)

स्ट्रिंग्स के रूप में इनपुट / आउटपुट, इसे ऑनलाइन आज़माएं!

व्याख्या

फ़ंक्शन pप्रत्येक वर्ण को एक स्थान से प्रतिस्थापित करता है, उपयोग करता है p b++aऔर p a++bइस प्रकार एक ही लंबाई है। इस तरह हम zipWithकिसी भी तत्व को खोए बिना उपयोग कर सकते हैं , maxइसके साथ काम करते हैं क्योंकि (स्पेस) में किसी भी वर्ण की तुलना में कम कोड पॉइंट होता है ['0'..'9']


3

जावास्क्रिप्ट (ईएस 6), 51 49 बाइट्स

एनबी: यह जवाब ढीले I / O स्वरूपों को स्पष्ट रूप से अनुमति देने से पहले पोस्ट किया गया था। अंकों के शून्य-गद्देदार सरणियों के साथ, यह 33 बाइट्स में किया जा सकता है , (लेकिन बहुत कम दिलचस्प है, आईएमएचओ)।

दो पूर्णांकों के रूप में इनपुट लेता है। एक पूर्णांक देता है।

f=(a,b,t=10)=>a|b&&(a%t<b%t?b:a)%t+t*f(a/t,b/t)|0

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

टिप्पणी की गई

f = (                     // f = recursive function taking:
  a,                      //   a = first integer
  b,                      //   b = second integer
  t = 10                  //   t = 10 (which is used 6 times below)
) =>                      //
  a | b                   // bitwise OR between a and b to test whether at least one of
                          // them still has an integer part
  &&                      // if not, stop recursion; otherwise:
  (                       //
    a % t < b % t ? b : a // if a % 10 is less than b % 10: use b; otherwise: use a
  ) % t +                 // isolate the last decimal digit of the selected number
  t *                     // add 10 times the result of
  f(a / t, b / t)         // a recursive call with a / 10 and b / 10
  | 0                     // bitwise OR with 0 to isolate the integer part

वैकल्पिक संस्करण

वही I / O प्रारूप।

f=(a,b)=>a|b&&[f(a/10,b/10)]+(a%10<b%10?b:a)%10|0

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


यदि आप अपने इनपुट को 2d स्थान गद्देदार वर्ण सरणी मानते हैं तो आप बहुत कम प्राप्त कर सकते हैं।
kamoroso94

नमस्ते! क्या आप कुछ स्पष्टीकरण दे सकते हैं? मैंने "" कोशिश की "" इस चुनौती को जावास्क्रिप्ट में करने के लिए लेकिन मैं असफल रहा और यह देखना चाहूंगा कि आपका समाधान कैसे काम करता है :)
Neyt

1
@ नहीं, मैंने एक टिप्पणी संस्करण जोड़ा है। वैकल्पिक संस्करण समान तर्क का उपयोग कर रहा है; एकमात्र अंतर यह है कि हम पुनरावर्ती कॉल के परिणाम को गुणा करने के बजाय एक स्ट्रिंग के रूप में बाईं ओर अगला अंक जोड़ते हैं।
अरनॉल्ड

@Arnauld धन्यवाद! :)
Neyt

2

Tcl , 156 बाइट्स

proc S a\ b {join [lmap x [split [format %0[set l [expr max([string le $a],[string le $b])]]d $a] ""] y [split [format %0$l\d $b] ""] {expr max($x,$y)}] ""}

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

बहुत गोल्फ नहीं है, लेकिन मुझे इस पर कोशिश करनी थी। बाद में गोल्फ करेंगे!



2

बैच, 120 बाइट्स

@set/aw=1,x=%1,y=%2,z=0
@for /l %%i in (0,1,9)do @set/a"z+=w*((v=y%%10)+(v-=x%%10)*(v>>4)),y/=10,x/=10,w*=10
@echo %z%

कमांड-लाइन मापदंडों के रूप में इनपुट लेता है। 188-बाइट संस्करण मनमाने ढंग से लंबाई पूर्णांक पर काम करता है:

@set/px=
@set/py=
@set z=
:l
@if %x:~-1% gtr %y:~-1% (set z=%x:~-1%%z%)else set z=%y:~-1%%z%
@set x=%x:~,-1%
@set y=%y:~,-1%
@if "%x%" neq "" if "%y%" neq "" goto l
@echo %x%%y%%z%

STDIN पर इनपुट लेता है।


2

टहनी , 125 बाइट्स

जब मैंने इस चुनौती को देखा, मैंने हालांकि: "मुझे एक टेम्पलेट भाषा का उपयोग करने दें! निश्चित रूप से एक अच्छा फिट है"

मैं गलत था ... इतना गलत .... .... लेकिन मजेदार था!

{%macro a(a,b,s='')%}{%for k,x in a|reverse|split('')%}{%set s=max(x,(b|reverse|split('')[k]))~s%}{%endfor%}{{s}}{%endmacro%}

इसके लिए आवश्यक है कि "hard_variables" को false(डिफ़ॉल्ट मान) पर सेट किया जाए ।

इस मैक्रो का उपयोग करने के लिए, आप इस तरह कर सकते हैं:

{% import 'file.twig' as my_macro %}

{{ my_macro.a(195,67) }}

167 प्रदर्शित करना चाहिए।

आप इसे https://twigfiddle.com/rg0biy
("सख्त_वियारी" पर बंद करने की कोशिश कर सकते हैं , यह वेबसाइट पर डिफ़ॉल्ट रूप से है)


1

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

↔¤żY↔

आसानी से अंकों की सूची के रूप में इनपुट / आउटपुट लेता है, इसे ऑनलाइन आज़माएं या सभी को सत्यापित करें!

व्याख्या

↔¤żY↔  -- example inputs [1,4] [3,2]
 ¤  ↔  -- reverse the arguments of: [4,1] [2,3]
  żY   -- | zipWith (keeping elements of longer) max: [4,3]
↔      -- reverse: [3,4]

1

स्टैक्स , 5 बाइट्स

|>E:o

इसे चलाएं और डीबग करें

यह प्रोग्राम इनपुट को स्ट्रिंग्स की एक सरणी के रूप में लेता है।

|>  Right align inputs (filling with \0)
E   "Explode" array onto stack separately
:o  "Overlay" Keep the maximum element respective element from two arrays.

इसको चलाओ

यह पहली बार है जब मैंने "वाइल्ड" में ओवरले इंस्ट्रक्शन का उपयोग देखा है।



1

अजगर, 5 बाइट्स

meSdC

दो अंतरिक्ष-पेड स्ट्रिंग्स के सरणी के रूप में इनपुट लेता है।

meSd       map greatest
    C      on the transpose of input

इसे यहाँ आज़माएँ ।



1

सीलोन, 55/99

एक ही लंबाई के 0- या अंतरिक्ष-गद्देदार तारों के साथ (वर्णों की पुनरावृत्ति लौटाना):

function t(String a,String b)=>zipPairs(a,b).map(max);

0- या स्पेस-पेड स्ट्रिंग्स के साथ (एक स्ट्रिंग लौटना):

String t(String a,String b)=>String(zipPairs(a,b).map(max));

संभवतः अलग लंबाई के तार के साथ (एक स्ट्रिंग लौटाते हुए):

String u(String a,String b)=>String(zipPairs(a.padLeading(b.size),b.padLeading(a.size)).map(max));



1

रेटिना 0.8.2 , 39 बाइट्स

+`^(.*)(.)¶(.*)(.)
$1¶$3¶$2$4
%O`.
¶.?

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण सूट शामिल है। पिछला 45-बाइट रेटिना 1 संस्करण बिना तार के स्वीकार करता है:

P^`.+
+`^(.*)(.)¶(.*)(.)
$1¶$3¶$2$4
%O`.
¶.?

इसे ऑनलाइन आज़माएं! लिंक में परीक्षण सूट शामिल है। स्पष्टीकरण:

P^`.+

दोनों मानों को समान लंबाई में पैड करें। (रेटिना 1 केवल। रेटिना 0.8.2 में इसका अनुकरण करने के तरीके हैं लेकिन वे बहुत गोल्फ नहीं हैं।)

+`^(.*)(.)¶(.*)(.)
$1¶$3¶$2$4

मूल्यों को स्थानांतरित करें।

%O`.

प्रत्येक जोड़ी को क्रम में क्रमबद्ध करें।

¶.?

सभी कम अंक और अधिशेष newlines हटाएँ।


1

चारकोल , 8 बाइट्स

⭆θ⌈⟦ι§ηκ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

 θ          First input
⭆           Map over characters and join
  ⌈         Maximum of
   ⟦        List of
    ι       Current character of first input and
      η     Second input
     §      Indexed by
       κ    Current index
            Implicitly print

10-बाइट संस्करण "गद्देदार तारों की किसी भी संख्या" को जोड़ता है:

⭆§θ⁰⌈Eθ§λκ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। पिछला 14-बाइट संस्करण बिना तार के स्वीकार करता है:

⭆◧θLη⌈⟦ι§◧ηLθκ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

  θ             First input
 ◧              Padded to
   L            Length of
    η           Second input
⭆               Map over characters and join
     ⌈          Maximum of
      ⟦         List of
       ι        Current character of first input and
          η     Second input
         ◧      Padded to
           L    Length of
            θ   First input
        §       Indexed by
             κ  Current index
                Implicitly print

17-बाइट संस्करण "स्ट्रिंग्स के किसी भी संख्या" को जोड़ता है:

≔⌈EθLιη⭆η⌈Eθ§◧ληκ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है।


प्रश्न को बदल दिया गया है ताकि तार को गद्देदार के रूप में इनपुट किया जा सके
ASCII-only

नाइटपैकिंग, लेकिन आप पहले वर्बोज़ संस्करण में एक नज़दीकी पार्न से चूक गए: P
ASCII-only

@ ASCII- केवल अगर TIO ने मेरे लिए Parens का मिलान किया ;-)
Neil

0

गणितज्ञ 50 बाइट्स

ए = 543; बी = 791;

FromDigits@MapThread[Max, IntegerDigits /@ {a, b}]

(* 793 *)


1
क्या आप एक TIO जोड़ सकते हैं? मुझे गणितज्ञ की जानकारी नहीं है लेकिन मुझे संदेह है कि यह विफल हो सकता है यदि 2 इनपुट में अंकों की समान संख्या नहीं है।
झबरा

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