एक "sjoelen" -game में अंक की गणना करें


31

ठीक है, इसलिए कल 2 क्रिसमस का दिन था और मेरे (भव्य) माता-पिता और मेरे पास "सेज़ेलन" का एक खेल था, जैसा कि नीदरलैंड में कहा जाता है। मेरे अंदर का प्रोग्रामर ऊपर आ गया, लेकिन जब मेरे पास जवाब था, तो मैंने उसे खो दिया। मैं चाहता हूं कि आप इसका रीमेक बनाएं।

नियम:

आपके पास एक लकड़ी का तख़्त है, एक सज्जेलबक , जिसमें 4 बक्से हैं, प्रत्येक अपनी संख्या के साथ। जब एक स्किज़फ (एक पक जैसी वस्तु) किसी एक बॉक्स में जाती है, तो आपको उस बॉक्स के ऊपर के अंक मिलते हैं।

A _sjoelbak_ _schijven_ के साथ
जब बॉक्स के सभी 4 में एक शिज़फ होता है , तो आपको 10 नहीं मिलते हैं लेकिन आपको 20 अंक मिलते हैं।

उदाहरण:

बाएं से दाएं: 3 5 4 3
प्रत्येक बॉक्स में कम से कम 3 schijven (बहुवचन के schijf ) होते हैं ताकि 20 * 3 = 60 अंक हों।

परिणामी मान: 0 2 1 0
0 * 2 + 2 * 3 + 1 * 4 + 0 * 1 = 10 अंक।

जो कुल 60 + 10 = 70 अंक बनाता है।

इनपुट:
की राशि schijven बाएं से दाएं, यानी "4 5 4 5", [4,5,4,5], "4 \ n5 \ n4 \ n5", जो कुछ भी आप की तरह।

आउटपुट:
अंकों की मात्रा, यानी 84, आउटपुट, वेरिएबल, रिटर्न या स्टैक के ऊपर, जो भी आपको पसंद है।

जैसा कि प्रत्येक और हर कोड गोल्फ में, आप बाहरी स्क्रिप्ट का उपयोग नहीं कर सकते हैं और कोड कम से कम बाइट्स जीतता है।

पुनश्च: जैसा कि आप पहले ही देख चुके हैं, मैं डच हूं। संभव व्याकरण की गलतियों को संपादित करने के लिए स्वतंत्र महसूस करें।


क्या आउटपुट स्टैडआउट होना चाहिए या क्या यह एक फ़ंक्शन रिटर्न या स्टैक पर शेष आइटम (स्टैक आधारित भाषा के लिए) हो सकता है?
globby

@globby सब कुछ हो सकता है
चार्ली

मुझे लगता है कि suzelen leuk है!
मार्क नॉल

1
क्या प्रत्येक बॉक्स में शिज़फ की संख्या की सीमा है?
The_Basset_Hound

@BassetHound आपको प्रति चक्कर में 30 शिज्विन मिलते हैं , इसलिए 4 में 30 बराबर 120 अंक मिलते हैं। यह संभव है, लेकिन सबसे अच्छा स्कोर नहीं (7 में सभी = 140, + 2 में 4 = 148)
चार्ली

जवाबों:


8

CJam, 23 21 20 बाइट्स

q~_$0=f+1m>{X):X*+}*

मैं इस बाइट के एक जोड़े को गोल्फ के लिए सक्षम हो सकता है।

इनपुट की तरह है

[3 5 4 3]

आउटपुट स्कोर है

70

यह काम किस प्रकार करता है

q~                         "Read the input and evaluate into an array";
  _$0=                     "Copy the array, sort it and get the minimum number";
                           "This minimum is the number of common schijven";
      f+                   "Increment each of the schijven by the common schijven number"; 
        1m>                "Take 1 element from the end of the array and put";
                           "it in the beginning";
           {      }*       "Reduce the elements of the array based on this block";
            X):X           "Increment and update the value of X (initially 1)";
                *          "Multiply the number of schijven with X";
                 +         "Add it to current score";

कलन विधि

  • चूँकि मैंने राइट को स्किविज़ेन की संख्या में स्थानांतरित कर दिया है, इसलिए स्कोर क्रम अब बन गया है [1 2 3 4]
  • इसके अलावा, इस तथ्य का उपयोग करते हुए कि 1 + 2 + 3 + 4 = 10, मैं बोनस 10स्कोर के प्रभाव को प्राप्त करने के लिए हर एक में न्यूनतम सामान्य स्किजन जोड़ देता हूं ।
  • अब जब मैं कम करता हूं, तो मुझे शुरू में स्टैक पर 2 तत्व मिलते हैं, पहला वाला, जिसे मैं अनदेखा करता हूं 1, प्रत्येक के स्कोर के साथ एक है , फिर मैं दूसरे के साथ गुणा करता हूं 2और इसे पहले जोड़ देता हूं । अगले पुनरावृत्ति में, मुझे वर्तमान राशि और स्कोर 3स्किविवेन मिलता है। और इसी तरह।

इसे यहाँ ऑनलाइन आज़माएँ


कम से कम बाइट्स (अब तक), स्वीकार किए जाते हैं। स्पष्टीकरण के लिए धन्यवाद।
चार्ली

@Charlie तुम इतनी जल्दी एक उत्तर क्यों स्वीकार करते हो? बेहतर होगा कि आप उत्तर स्वीकार करने से 1-2 सप्ताह पहले प्रतीक्षा करें।
प्रोग्रामफॉक्स

8

पीट, 240 (30 * 8) कोडल्स, 138 जिसमें वास्तविक कोड है

बेहतर दृश्यता के लिए कोडेल आकार 10,

Piet: sjoelen बिंदु गणना

परीक्षण उदाहरण:

D:\codegolf\npiet-1.3a-win32>npiet sjoelen_point_count_cs10.png
? 3
? 5
? 4
? 3
70
D:\codegolf\npiet-1.3a-win32>npiet sjoelen_point_count_cs10.png
? 4
? 5
? 4
? 5
84

प्रवाह प्रदर्शन:

आसान हैंडलिंग और कॉम्पैक्ट डिस्प्ले के लिए अपने शॉर्टहैंड का उपयोग करना। यह सामान्य प्रोग्राम फ्लो दिखाता है, कोडल्स के सटीक स्थान नहीं।

NOP ADD DIV GRT DUP INC END
 0   +   /   >   =   c   ~
PSH SUB MOD PTR ROL OUN
 X   -   %   #   @   N
POP MUL NOT SWI INN OUC
 ?   *   !   $   n   C

1X!nnnn=5X2X@=5X2X@=5X2X@=5X1X@**
       0                        *
       0       @+5X1X@1X-4X1X@  !
       0       -             0  !
       0       X1!X1X6+*==X40000#  <--pointer if top of stack=1 (all boxes full,
       0                     0  2      add 20 points, decrement count for all boxes)
       0000-X1@X1X2-X1@X1X3-X1  X  |  pointer if top of stack=0 (not all boxes full,
                                *  V   add 2a+3b+4c+d)
           ~N++++*X4@X2X3*X3@X1X2

पूर्ण विवरण:

      (score=0)  a   b   c   d
      1 PSH NOT INN INN INN INN

      ..... sort and duplicate the numbers .....
**1** DUP 5 PSH 2 PSH ROL DUP 5 PSH 2 PSH ROL DUP 5 PSH 2 PSH ROL DUP 5 PSH 1 PSH ROL

      ( a*b*c*d ) (convert to boolean) 1 if all boxes are full, 0 if at least one box is empty
      MUL MUL MUL NOT NOT

      change direction if 1 (**2**)
      go straight ahead if 0 (**3**)
      PTR

      ( compress 20=4*4+4 )       (0-1=-1/ neg. roll) score+20
**2** 4 PSH DUP DUP MUL ADD 6 PSH 1 PSH NOT 1 PSH SUB ROL ADD

      (put score back to bottom of stack) ... a=a-1, b=b-1, c=c-1, d=d-1 ...
      5 PSH 1 PSH ROL 1 PSH SUB 4 PSH 1 PSH ROL 1 PSH SUB 3 PSH
      1 PSH ROL 1 PSH SUB 2 PSH 1 PSH ROL 1 PSH SUB

      loop to **1**

      (   a*2   )               (   b*3   )               (  c*4  )
**3** 2 PSH MUL 2 PSH 1 PSH ROL 3 PSH MUL 3 PSH 2 PSH ROL 4 PSH MUL

      +2a +3b +d +score
      ADD ADD ADD ADD

      output score
      OUN

छवि सहेजें और इसे इस ऑनलाइन पीट दुभाषिया में आज़माएँ:

PietDev ऑनलाइन Piet दुभाषिया


एक पीट जवाब ^। ^
The_Basset_Hound

बेशक! मैं जब भी प्रबंधनीय हो Piet के जवाब जोड़ने की कोशिश करता हूं;)
ML


7

गणितज्ञ, 38 32 23 20 बाइट्स

(#+Min@#).{2,3,4,1}&

( स्विश की मदद से )

अंत तक इनपुट से निपटने के द्वारा उपयोग करें:

(#+Min@#).{2,3,4,1}&@{3,5,4,3}

70

वैकल्पिक (36 बाइट्स):

20*Min@#+Total[(#-Min@#)*{2,3,4,1}]&

Tr[(# + Min@#) {2, 3, 4, 1}] &
बेंत की मार

@ अतिश चतुर!
kukac67

1
वह पूरा समारोह है। आपको जोड़ने की आवश्यकता नहीं है 20*Min@#, आप आसानी से प्लस के साथ माइनस को बदलकर इससे छुटकारा पा सकते हैं 2+3+4+1==10
swish

@ हंस ओह! वह तो उससे भी बढ़िया है। लेकिन मैं अपने सिर को इधर उधर क्यों नहीं लपेट सकता?
kukac67

2
@swish खैर, सभी की मदद के लिए धन्यवाद, लेकिन आपको सिर्फ अपना जवाब पोस्ट करना चाहिए था। : D
kukac67 18

7

आर, 41 40 चार्ट

b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))

उपयोग:

> b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))
1: 4 5 4 5
5: 
Read 4 items
[1] 84
> b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))
1: 3 5 4 3
5: 
Read 4 items
[1] 70

पिछले उदाहरण में, aवेक्टर है 3 5 4 3, a-bहै 0 2 1 0, जो हम वेक्टर के साथ गुणा 2 3 4 1इस प्रकार दे रही है 0 6 4 0हम साथ जोड़ने के जो 5*bदे रही है 15 21 19 15( 5*bजोड़ा वेक्टर के प्रत्येक सदस्य के लिए पुनर्नवीनीकरण किया जा रहा है, इसलिए प्रभावी रूप से जोड़ने 4*5*b,) जो हम अंत में योग, इस प्रकार दे रही है 70


40 बाइट्स:b=min(a<-scan());sum(5*b+(a-b)*c(2:4,1))
एलेक्स ए।

5

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

s=(a,b,c,d)=>10*Math.min(a,b,c,d)+a*2+b*3+c*4+d

उपयोग: s(1, 2, 3, 4)

यह कैसे काम करता है: फ़ंक्शन तर्कों में सबसे छोटी संख्या के लिए दिखता है, और इसके द्वारा 10(नहीं के साथ 20) गुणा करता है और बाकी के स्कोर को जोड़ता है। 20गणना जारी रखने के लिए स्कोर से भागों को गुणा और घटाना आवश्यक नहीं है ।

सुधार साझा करने के लिए edc65 का धन्यवाद!

संयुक्त राष्ट्र के golfed:

function score(a, b, c, d) {
    return 10 * Math.min(a, b, c, d) + a * 2 + b * 3 + c * 4 + d;
}

1
मिनट के साथ 10 का उपयोग करें, को घटाने की जरूरत नहीं है (फ़ंक्शन एस (ए, बी, सी, डी) {वापसी 10 * गणित.मिन (ए, बी, सी, डी) + एक * 2 + बी * 3 + सी * 4 + d;})
edc65

1
और ES6 में:S=(a,b,c,d)=>10*Math.min(a,b,c,d)+a*2+b*3+c*4+d
edc65

@ edc65 बहुत बढ़िया, धन्यवाद!
प्रोग्रामफॉक्स

5

अजगर , १५

sm*hd+@QtdhSQUQ

इनपुट को STDIN, जैसे उदा पर अलग से अल्पविराम दिया जाना चाहिए

3,5,4,3

यह उसी चाल का उपयोग करता है जो कई अन्य समाधानों का उपयोग करते हैं, बोनस के लिए खाते में न्यूनतम प्रत्येक तत्व को जोड़ने के लिए। hSQउपरोक्त कोड में न्यूनतम है । 2, 3, 4, और 1 से गुणा करने के लिए, मैं सूची [0,1,2,3] पर d मैप करता हूं, और d + 1 द्वारा इनपुट के d (dl) वें तत्व को गुणा करता हूं। इस प्रकार, -1 तत्व को 1 से गुणा किया जाता है, 2 से शून्य, 3 से पहला और 4. के बाद दूसरा।


5

जे, 23 22 चर

   (+/ .*&2 3 4 1@(+<./))

उदाहरण:

   test =. 3 5 4 3
   (+/ .*&2 3 4 1@(+<./)) test
70

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

(23 लंबे स्पष्ट फ़ंक्शन परिभाषा: v=:3 :'+/+/\.3|.y+<./y')


सिर्फ क्यों नहीं +/2 3 4 1*(+<./)?
बेंत की मार

@swish मैं पूर्ण कार्यों को लिखना पसंद करता हूं, हालांकि यह यहां की आवश्यकता नहीं थी। यदि आप चाहें तो इसे पोस्ट / जोड़ें।
क्रमांक

कैसे के बारे में 2 3 4 1+/ .×]+<./?
एडम जूल

4

शुतुरमुर्ग v0.1.0 , 48 41 वर्ण (वैसे बहुत लंबा)

.$0={}/:n;{n-}%)\+1:i;{i*i):i;}%{+}*20n*+

यह नीचे दिए गए पुराने संस्करण के समान ही है, सिवाय इसके कि @पूरे स्टैक को घुमाने के बजाय , )\+(दायां अनकॉन्स) इसके बजाय उपयोग किया जाता है।

पुराना संस्करण:

.$0={}/:n;{n-}%{}/{4@}3*1:i;]{i*i):i;}%{+}*20n*+

मैंने वास्तव में अपनी बहुत नई कार्यान्वित भाषा में दो बग खोजे हैं, जो नीचे दिए गए विवरण में एनोटेट किए गए हैं। (भाषा वर्तमान में बहुत, बहुत गोल्फ गोल्फ के समान है, इसलिए यदि आप गोल्फस्क्रिप्ट जानते हैं तो इसे पढ़ना काफी आसान होना चाहिए।

.$0=   get min value (for the *20 thingy)
{}/    *actually* get min value (BUG: `array number =' returns a single-element array...)
:n;    store as n
{n-}%  subtract this value from all array elements
{}/    dump array onto stack
{4@}3* rotate stack so that instead of 2 3 4 1, multipliers are 1 2 3 4
       (BUG: negative rotations don't work)
1:i;   set i (the multiplier) to 1
]{i*   multiply each array element by i
i):i;  increment i
}%     (do the previous 2 lines over each array element)
{+}*   add up all the array elements
20n*+  add 20*n (the min value we got in line 1)

एसटीडीआईएन पर एक सरणी के रूप में इनपुट की उम्मीद है, क्योंकि मैं एक डॉर्कनोब हूं और v0.1.0 में I / O को लागू करना भूल गया।

शुतुरमुर्ग में एक वास्तविक समस्या का समाधान करना अच्छा है, क्योंकि यह मुझे दिखाता है कि मुझे भाषा में जोड़ने के लिए कितना अधिक सामान चाहिए।


अपनी भाषा के साथ सौभाग्य, यह अब तक अच्छा लग रहा है;)
चार्ली

4

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

lambda i:i[1]-i[3]+2*(sum(i)+i[2]+5*min(i))

@ User2487951 के उत्तर से प्रेरित।


अच्छा एल्गोरिथ्म! एक पूर्ण कार्यक्रम के लिए, आपको इनपुट और प्रिंट स्टेटमेंट भी चाहिए।
user2487951

1
@ user2487951 आउटपुट के स्वीकार्य साधनों में से एक "वापसी" था, इसलिए जब तक कि यह एक पूर्ण कार्यक्रम नहीं है, यह एक वैध उत्तर है।
इसहाक

3

जगल अल्फा 1.2 - 20 बाइट्स

इनपुट प्रारूप में स्टडिन में है (3 4 5 6), आउटपुट स्टैक पर छोड़ा गया है:

T~dqZ*S1 5r]%{U*}/b+

आउटपुट प्रारूप के बारे में मूल पोस्टर से प्रतिक्रिया की प्रतीक्षा कर रहा है। चूंकि इनपुट को "जो भी आप पसंद करते हैं" के रूप में निर्दिष्ट किया गया है , मैं यह मानने जा रहा हूं कि मेरा इनपुट स्टैक के शीर्ष पर एक सरणी हो सकता है। अब स्टड पर इनपुट लेता है।

स्पष्टीकरण:

T~                            Get input from stdin and evaluate
  dqZ*                      Duplicate, get minimum, and multiply that by 10
      S1 5r]                Swap (so array is on top), push range 1-5 exclusive, and rotate
            %{U*}/          Zip arrays together, and multiply each pair
                  b+P       Get the sum of that, add the common minimum, and print

पहला उत्तर स्वीकार किया जाता है, इसे स्पष्ट करने के लिए संपादित पोस्ट
चार्ली

@ ऑप्टीमाइजर पॉइंट लिया गया। संपादित।
ग्लोब डे

3

हास्केल, 40

g l@[a,b,c,d]=2*a+3*b+4*c+d+10*minimum l

बाकी से न्यूनतम संख्या निकालने और अतिरिक्त 20एस जोड़ने के बजाय , यह 10न्यूनतम संख्या के लिए अतिरिक्त जोड़ता है ।


अच्छा समाधान है। आपने आदेश को मिलाया, हालांकि, यह होना चाहिए..4*c+d..

3

मतलब, २ 27

मुझे यह समझने में थोड़ा समय लगा कि यह एकल खिलाड़ी खेल है। अनाम फ़ंक्शन की सहायता से

f=@(N)N*[2;3;4;1]+10*min(N)

जो पंक्ति वेक्टर के साथ लगाया जाता है

f([3 5 4 3]) == 70
f([7 7 9 7]) == 148

1
मुझे लगता है कि आम तौर पर इन भागों के आसपास f=2 कम बाइट्स को छोड़ने के लिए स्वीकार किया जाता है । फ़ंक्शन ansइसके बजाय चर में संग्रहीत किया जाता है ।
ब्रेनसैट

1
[2:4,1]यदि इनपुट कॉलम वेक्टर है तो 2 बाइट्स से दाढ़ी बनाएंगे।
सांचेस

2

जावा, 84 बाइट्स

int A(int[]a){int m=9;for(int i:a)m=i<m?i:m;return 10*m+a[3]+2*a[0]+3*a[1]+4*a[2];}

मुझे लगता है कि यह किसी भी आगे गोल्फ हो सकता है, लेकिन यह अब के लिए है।

साथ बुलाओ A(new int[]{3,5,4,3}), आउटपुट int के रूप में वापस आ गया है (क्योंकि System.out.println()बाइट दोगुनी हो जाएगी)

Ungolfed

int getScore(int[] input){
    int min=9;

    for(int x:input) {
        if(x<min){
            min=x;
        }
    }

    return 10*min + 2*input[0] + 3*input[1] + 4*input[2] + 1*input[3];
}

2

GolfScript, 22 बाइट्स

~3,{1$>~;}%+$(11*+{+}*

स्टड से इनपुट पढ़ता है, प्रारूप में [3 5 4 3]। आउटपुट को stdout में लिखता है। (यदि इनपुट को स्टैक पर एक सरणी के रूप में लेने की अनुमति है, तो अग्रणी ~को 21 बाइट्स के लिए छोड़ा जा सकता है)।

यह CJam / Pyth / etc सॉल्यूशंस की तुलना में कुछ अलग रणनीति का उपयोग करता है: मैं पहली बार पहली इनपुट वैल्यू की 2 प्रतियों के साथ एक सरणी बनाता हूं, 3 का दूसरा, 4 का तीसरा और एक का चौथा। फिर मैं इस सरणी को सॉर्ट करता हूं, सबसे छोटे तत्व को बाहर निकालता हूं, इसे 11 से गुणा करता हूं और अन्य तत्वों के साथ योग करता हूं।


2

अजगर २, ५१

अप्रकाशित, लेकिन छोटा:

l=input()
print l[0]*2+l[1]*3+l[2]*4+l[3]+10*min(l)

अधिक पायथोनिक:

l=input()
print sum(map(lambda x,y:x*y,l,[2,3,4,1]))+10*min(l)

यदि इनपुट [3,5,4,3] है, तो क्या यह रिटर्न 70 होगा?
चार्ली

हाँ, यह दोनों मामलों में करता है। और [4,5,4,5] के लिए 84 रिटर्न।
user2487951

2

जूलिया, 48 35 अक्षर

function p(m);sum([2 3 4 1].*m)+10minimum(m);end

कॉम्पैक्ट असाइनमेंट फॉर्म में:

p(m)=sum([2 3 4 1].*m)+10minimum(m)

उदाहरण:

julia> p([3 5 4 3])
70

2

जावास्क्रिप्ट, 97 बाइट्स

a=prompt().split(" "),b=Math.min.apply(1,a);alert(20*b+2*(a[0]-b)+3*(a[1]-b)+4*(a[2]-b)+(a[3]-b))

1

जावास्क्रिप्ट, ईएस 6, 57

f=(a,b,c,d)=>a*b*c*d?20+f(--a,--b,--c,--d):a*2+b*3+c*4+d

मैं देखना चाहता था कि कैसे पुनरावृत्ति निकलेगी, और जब यह निश्चित रूप से सबसे छोटा जवाब नहीं है, तो मुझे लगा कि यह अच्छी तरह से निकला है।

a*b*c*d: यह इनपुट मूल्यों को लेता है और उन सभी के उत्पाद को पाता है, और मूल्यांकन करता है कि स्टेटमेंट के लिए एक इनलाइन के लिए बूलियन अभिव्यक्ति के रूप में। यदि एक या अधिक मान 0 है, और किसी अन्य मान के लिए सही है, तो यह गलत हो जाएगा।

20+f(--a,--b,--c,--d): यदि यह सही है, तो फ़ंक्शन 20 ( schijven सेट के लिए) प्लस फ़ंक्शन के पुनरावर्ती कॉल के लिए सभी मान शून्य से एक (उस schijven सेट को निकालने के लिए ) देता है। इस तरह यह कम से कम एक बॉक्स खाली होने तक पुनरावर्ती लूप करेगा।

a*2+b*3+c*4+dकम से कम एक बॉक्स इसे खाली करने के बाद, यदि विवरण चलेगा तो इनलाइन का दूसरा भाग। यह सिर्फ शेष के लिए अंक देता schijven बक्से में।

इस प्रकार अंत में सभी 20 पॉइंट स्किविज़ेन सेट, और रिमांडिंग पॉइंट्स को सारांशित किया जाता है और फ़ंक्शन से वापस आ जाता है, जिससे उत्तर बनता है।


1

हास्केल 42 वर्ण

f l=10*minimum l+sum(zipWith(*)[2,3,4,1]l)

राशि को स्पष्ट रूप से कोड करें: f l@[a,b,c,d]=10*minimum l+2*a+3*b+4*c+d- 2
चार्ट

1

HPPPL (HP प्राइम प्रोग्रामिंग भाषा), 58 57 बाइट्स

* 10 और मिनट के बीच आवश्यक नहीं है, इसलिए मैंने इसे हटा दिया।

EXPORT s(m)
BEGIN
return sum([2,3,4,1].*m)+10min(m);
END;

HPPPL HP प्राइम कलर ग्राफिंग कैलकुलेटर / CAS के लिए प्रोग्रामिंग भाषा है।

उदाहरण चलता है:

HPPPL स्क्रीन कैप्चर ऑफ़ सोज़लेन पॉइंट काउंट प्रोग्राम

यदि यह एक कार्यक्रम नहीं है, तो यह एक में वसूली योग्य है 40 39 बाइट्स वन-लाइनर:

m:=[3,5,4,3];sum([2,3,4,1].*m)+10min(m)

1

स्टैक, 72 अक्षर

't't't't{aii*XX}$&iia$&ia$&a+XX+XX+|{mxx}{lxX}{k>?m!l}kkk&iiqi&ii*s*t|+:

उदाहरण रन:

Executing D:\codegolf\Staq\sjoelen codegolf.txt

3
5
4
3
70

Execution complete.
>

स्टैक में दो स्टैक होते हैं, एक सक्रिय, एक निष्क्रिय। |आदेश निष्क्रिय है और इसके विपरीत करने के लिए सक्रिय ढेर स्विच करता है।

घुंघराले ब्रेसिज़ के बीच सब कुछ एक फ़ंक्शन को परिभाषित करता है, शुरुआती ब्रेस के बाद पहला अक्षर फ़ंक्शन नाम है, बाकी जब तक कि बंद ब्रेस स्वयं फ़ंक्शन नहीं है। ओवरराइडिंग फ़ंक्शन, रिकर्सन और नेस्टेड फ़ंक्शन संभव हैं। {aii}एक समारोह को परिभाषित करेगा एक है कि ढेर के शीर्ष में दो बार बढ़ा देते हैं। aकोड के प्रत्येक निम्न उदाहरण को प्रतिस्थापित किया जाएगा ii

Staq prorams के अंदर टिप्पणियाँ : &स्टैक के शीर्ष पर एक शून्य जोड़ता है, [पॉइंटर को संबंधित पर कूदने का निर्देश देता है ]यदि स्टैक के शीर्ष पर शून्य है, xस्टैक पर सबसे ऊपर का मूल्य हटाता है। तो, टिप्पणियों के रूप में कोड में लिखा जा सकता है&[here is a comment]x

स्पष्टीकरण (निष्पादन योग्य भी):

'                                      &[input number]x
 t                                     &[copy top of active stack to passive stack]x
  t't't                                &[input next three numbers and copy them to the passive stack]x
       {aii*XX}                        &[define function a (increment twice, multiply the two topmost values, then delete the second value on the stack twice)]x
               $                       &[move top value to the bottom of the stack]x
                &ii                    &[put zero on top of the stack, incremment twice]x
                   a                   &[function a]x
                    $&ia$&a
                           +           &[put sum of the two topmost values on top of the stack]x
                            XX         &[delete second stack value, twice]x
                              +XX+
                                  |    &[switch active/passive stack]x
{mxx}                                  &[define function m: delete two topmost stack values]x
     {lxX}                             &[define function l: delete topmost stack value, then delete second value of remaining stack]x
          {k>?m!l}                     &[define function k: boolean top > second value? put result on top of the stack, if top>0 then execute m, if top = 0 then execute l]x
                  kkk&ii
                        q              &[put square of top value on top of the stack]x
                         i&ii
                             *         &[multiply two topmost values and put result on top of the stack]x
                              s        &[move bottom stack value to the top]x
                               *t|+
                                   :   &[output result]x

https://esolangs.org/wiki/Staq

कार्यक्रम 2a + 3b + 4c + d की गणना करने के लिए एक स्टैक (शुरू में सक्रिय) और इनपुट मानों की न्यूनतम 10 गुना गणना करने के लिए दूसरे स्टैक (शुरू में निष्क्रिय) का उपयोग करता है। फिर दोनों परिणामों को सारांशित और प्रदर्शित किया जाता है।


1

विंडोज के लिए पावरशेल , 48 47 बाइट्स

-1 बाइट धन्यवाद mazzy के लिए

$args|%{$a+=++$i%4*$_+$_}
$a+10*($args|sort)[0]

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


1
इसे ऑनलाइन आज़माएं! । क्या हमें निर्दिष्ट करना चाहिए Powershell for Windowsजब हम sortउपनाम का उपयोग करते हैं ? मेटा
माज़ी

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