आपका बहुत ही "अनुदेश" के लिए


38

आपका बहुत "निर्देश" के लिए

मान लें कि आपके पास निम्न इनपुट है: a, b, c, d

इनपुट किसी भी प्रारूप "a / b / c / d" या "a, b, c, d" आदि का उपयोग करके एक-पंक्ति में हो सकता है।

आपके पास 4 इनपुट भी हो सकते हैं।

आपको निम्न व्यवहार को कोड करना होगा (छद्म कोड यहाँ):

var i = <a>
while (i <b> <c>)
    print i
    i = i + <d>
    print "\n"

यहाँ कुछ परीक्षण मामले हैं:

input : 1,<,10,1
output :
1
2
3
4
5
6
7
8
9

एक और :

input : 20,>,10,1
output :
20
21
22
23
24
25
26
27
...
infinite loop / program crashes
  • aएक पूर्णांक है , का प्रारंभिक मूल्य i

  • bएक स्ट्रिंग या चार है , यह कुछ और नहीं हो सकता है, forलूप की समाप्ति स्थिति में उपयोग किए जाने वाले तुलनित्र ।

    bऔर कर सकते हैं चाहिए निम्नलिखित तार में से एक हो:

    - ">"
    - "<"
    
  • cएक पूर्णांक है , for लूप की समाप्ति स्थिति में उपयोग की जाने वाली संख्या ।

  • dएक पूर्णांक है जो प्रत्येक लूप में i को जोड़ा जाता है।

यह कोड-गोल्फ है, सबसे छोटा उत्तर जीतता है!


1
क्या संख्याओं को एक सूची / अनुक्रम के रूप में एक समारोह से वापस लौटाया जा सकता है, बजाय कि प्रिंटआउट के?
SMLS

@smls नहीं क्षमा करें, आउटपुट उदाहरणों की तरह होना चाहिए!
सिगमेई

1
यह कहता है कि मेरे कोड को छद्म कोड का पालन करना चाहिए और वहाँ एक है print "\n", लेकिन मैं प्रत्येक पंक्ति के लिए जावास्क्रिप्ट के अलर्ट का उपयोग कर रहा हूं। क्या यह स्वीकार्य होगा, या मुझे अपना उत्तर लंबा करने के बजाय कंसोल.लॉग का उपयोग करना होगा?

2
आप ouput के लिए चेतावनी फ़ंक्शन का उपयोग कर सकते हैं, लेकिन आप कई अलर्ट का उपयोग नहीं कर सकते। कुछ alert("23\n24\n25");ऐसा काम करेगा जबकि alert("23"); alert("24"); alert(25);नहीं होगा
Sygmei

जवाबों:


25

जावास्क्रिप्ट (ईएस 6),  44  43 56 बाइट्स

सहेजे गए 1 बाइट को ETHproductions के लिए धन्यवाद
: आउटपुट आवश्यकताओं के अनुपालन के लिए तय किया गया

(a,b,c,d)=>{for(s='';eval(a+b+c);a+=d)s+=a+`
`;alert(s)}

परीक्षा


स्कोप का अच्छा उपयोग!
ETHproductions

मुझे लगता है कि आप evalबाइट को बचाने के लिए पुनर्व्यवस्थित कर सकते हैं :(a,b,c,d)=>{for(;eval(a+b+c);a+=d)alert(a)}
ETHproductions

@ETHproductions आह, हाँ। अच्छा है!
अरनौलड़

5
वह एक टूटू के साथ 44 का है!
aross

यह उस विनिर्देश का पालन नहीं करता है जहां आउटपुट प्रत्येक लाइन के बाद U + 000A के साथ लाइन-बाय-लाइन है।
जॉय

17

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

संस्करण के लिए बनाना चाहता था, लेकिन कोई व्यक्ति तेज़ था, इसलिए यहाँ पुनरावर्ती संस्करण है।

(b,c,d)=>F=a=>eval(a+b+c)&&console.log(a)|F(a+d)

आपको f=पहले जोड़ने और इसे कॉल करने की आवश्यकता है f(b,c,d)(a)

भयानक गोल्फ के लिए अरनॉल्ड को बहुत धन्यवाद।

alertconsole.logआउटपुट विनिर्देश के कारण बदल गया है


@ अर्नुलद धन्यवाद, यह एक बहुत अच्छा गोल्फ है। मैंने सिर्फ उससे पूछा, तो चलो देखते हैं कि क्या वह इसे स्वीकार करता है।

इसे स्वीकार करते हुए खुशी हुई। ;)
अरनौलड

यह उस विनिर्देश का पालन नहीं करता है जहां आउटपुट प्रत्येक लाइन के बाद U + 000A के साथ लाइन-बाय-लाइन है।
जॉय

@Joey यह सिर्फ छद्म कोड है, लेकिन मैं इस बारे में ओपी से पूछूंगा।

@ मैस्टरजैग: वैकल्पिक आउटपुट प्रारूपों के बारे में पहले से ही एक प्रश्न था जिसे अस्वीकार कर दिया गया था।
जॉय


13

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

Ṅ+⁶µ⁴;⁵¹vµ¿t

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

जेली के कई तरीके होते हैं, पुनरावृत्ति करना, सीमाएँ बनाना, आदि। हालांकि, C ++ के व्यवहार को स्पष्ट रूप से चित्रित करना, वृद्धि के 0 जैसे विशेष मामलों के कारण, लूप शुरू होने से पहले समाप्त हो रहा है (असमानता पीछे की ओर होने के कारण) ), और वेतन वृद्धि गलत दिशा में जा रही है (इस प्रकार लूप की निकास स्थिति स्वाभाविक रूप से पूरी नहीं की जा सकती)। इस प्रकार, यह समाधान मूल रूप से C ++ का प्रत्यक्ष अनुवाद है, भले ही यह सामान्य रूप से जेली कार्यक्रम की तुलना में अधिक निम्न-स्तरीय हो। सौभाग्य से, C ++ ने हस्ताक्षर किए गए पूर्णांक अतिप्रवाह (प्रश्न का उपयोग करता है int) पर अपरिभाषित व्यवहार किया है , जिसका अर्थ है कि एक प्रोग्राम उस मामले में कुछ भी कर सकता है, और इस प्रकार अतिप्रवाह व्यवहार की नकल करने की कोई आवश्यकता नहीं है।

व्याख्या

Ṅ+⁶µ⁴;⁵¹vµ¿t
   µ     µ¿   While loop; while ((⁴;⁵¹v) counter) do (counter = (Ṅ+⁶)counter).
    ⁴;⁵       Second input (b) appended to third input (c), e.g. "<10"
        v     Evaluate, e.g. if the counter is 5, "<10" of the counter is true
       ¹      No-op, resolves a parser ambiguity
Ṅ             Output the counter, plus a newline
 +⁶           Add the fourth input (d)
           t  Crashes the program (because the counter is not a list)

प्रोग्राम को क्रैश करना जेली के निहित आउटपुट को बंद करने का सबसे कठिन तरीका है (अन्यथा, यह काउंटर के अंतिम मूल्य को आउटपुट करेगा); यह stderr पर त्रुटि संदेश का एक समूह उत्पन्न करता है, लेकिन हम आम तौर पर इस बात पर विचार करते हैं कि अनुमति दी जाए।

संयोग से, लूप काउंटर को लूप शुरू होने से पहले वर्तमान मूल्य के साथ आरंभ किया जाता है। जैसा कि लूप प्रोग्राम की शुरुआत में दिखाई देता है, वह पहला इनपुट होगा।


आपके पास कोई दुर्घटना नहीं tहोने के लिए बदल सकता है । एक खाली सूची में यह परिणाम निकलता है जिसके लिए जेली के अंतर्निहित प्रिंट से कुछ नहीं होता है।
जोनाथन एलन

@JonathanAllan: यह नहीं है, यह वास्तव में क्या करता है 2 से दिए गए मूल्य के लिए एक सीमा बनाने के लिए, जो निश्चित रूप से एक अंतर्निहित प्रिंट पर दिखाई देता है।

आह, मैंने नकारात्मक क्षेत्र में समाप्त होने वाले लूप के साथ उस सिद्धांत का परीक्षण किया होगा; वास्तव में एक सीमा निहित है।
जोनाथन एलन

उह, यह 12 अक्षर है, लेकिन यह 12 बाइट्स सही नहीं है?
Cruncher

@ क्रंचर: जेली अपने स्वयं के एन्कोडिंग का उपयोग करता है जिसमें भाषा द्वारा उपयोग किए जाने वाले प्रत्येक चरित्र को एक एकल बाइट द्वारा दर्शाया जाता है (यह केवल 256 विभिन्न वर्णों का उपयोग करता है)। इसका कारण यह है कि कोड-पेज 437 जैसे कुछ बेहतर-ज्ञात का उपयोग नहीं किया जाता है, इसे टाइप करना आसान है (मेरा मतलब है, यह टाइप करना आसान नहीं है, लेकिन यह gs2 जैसी भाषा की तुलना में आसान है)। इस कार्यक्रम का एक हेक्सडंप 12 बाइट्स लंबा होगा।



9

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

(a,b,c,d)->{for(;b>61?a>c:a<c;a+=d)System.out.println(a);}

14
क्या कोई कारण है i? क्या आप आरंभीकरण भाग को छोड़ सकते हैं और सिर्फ उपयोग कर सकते हैं a? इसके अलावा, '>' (62) के ASCII मूल्य का उपयोग करने से बाइट की बचत होती है।
रिले

6
रिले की टिप्पणी के बाद, आप कर सकते हैंb>61
क्रिक्टी लिथोस

मैं इस संकलन पर विश्वास नहीं करता।
चीफट्विपेंसिल्स

@ChiefTwoPencils यह एक समारोह है। इसे संकलित करने के लिए आपको इसके चारों ओर एक परीक्षण कार्यक्रम लिखना होगा।
wizzwizz4

@ wizzwizz4, जाहिर है। लेकिन वह अभी भी काम नहीं करता है। इसे आजमा कर देखें। साथ ही, मेरी समझ से इसे चलाने के लिए आवश्यक सभी बाइट्स हैं।
चीफट्विपेंसिल्स

7

05AB1E , 22 20 बाइट्स

[D²`'>Q"‹›"è.V_#D,³+

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

व्याख्या

[                       # start loop
 D                      # copy top of stack (current value of a)
  ²`                    # push b,c to stack
    '>Q                 # compare b to ">" for equality
       "‹›"             # push this string
           è            # index into the string with this result of the equality check
            .V          # execute this command comparing a with c
              _#        # if the condition is false, exit loop (and program)
                D,      # print a copy of the top of the stack (current value of a)
                  ³+    # increment top of stack (a) by d

1
कोई भी इनपुट प्रारूप स्वीकार किया जाता है, इसलिए दूसरा संस्करण ठीक है :)
सिगमेई

7

स्माइलबासिक, 53 बाइट्स

INPUT A,B$,C,D
S=ASC(B$)-61WHILE S*A>S*C?A
A=A+D
WEND

स्पष्टीकरण:

INPUT A,B$,C,D
IF B$=="<" THEN S=-1 ELSE S=1 'get comparison direction
I=A
WHILE S*I>S*C 'loop while I is less than/greater than the end
 PRINT I
 INC I,D
WEND

यह इस तथ्य का उपयोग करता X<Yहै जो समान है-X>-Y


मैं इस एक के लिए आप पर विश्वास करूँगा, मेरे पास परीक्षण करने के लिए एक 3DS नहीं है :)
Sygmei

मेरे पास पेटिट कंप्यूटर है, इसलिए बहुत अच्छा विचार है! मैं कुछ समय कुछ इस तरह की कोशिश करूंगा ...
python-b5

आप READ1 बाइट की बचत करके एक स्टेटमेंट का उपयोग कर सकते हैं ।
ckjbgames

@ckjbgames कैसे?
12M2121

@ 12Me21 SmileBASIC मैनुअल की जाँच करें। यह SmileBASIC के निर्देशों की सूची में होना चाहिए।
ckjbgames

6

ढेर , 34 बाइट्स

@d@c@b[show d+][:c b tofunc!]while

इसे ऑनलाइन आज़माएं! (परीक्षण शामिल है।) यह एक ऐसा फंक्शन है जो स्टैक की तरह दिखने की उम्मीद करता है:

a b c d

उदाहरण के लिए:

1 '<' 10 2
@d@c@b[show d+][:c b tofunc!]while

व्याख्या

@d@c@b[show d+][:c b tofunc!]while
@d@c@b                               assign variables
               [............]while   while:
                :c                   duplicate "i" and push c
                   b tofunc!         convert b to a function and execute it
      [.......]                      do:
       show                          output "i" without popping
            d+                       and add the step to it

4

सी ++, 80

वूप्स, यह C++नहीं है C। सवाल से थोड़ा उलझन में था।

void f(int a,char b,int c,int d){for(;b==62?a>c:a<c;a+=d)cout<<a<<endl;}

क्या यह C या C ++ है?
betseg

10
C ++ का कौन सा कार्यान्वयन? (मैं उत्सुक हूं कि आप कुछ using namespace stdमुफ्त में कैसे प्राप्त कर रहे हैं)।
एच वाल्टर

iशुरू नहीं होता है a, नहीं 0? आप बस पूरी तरह से उपयोग aऔर छोड़ सकते हैं और i'>' के ASCII मान का उपयोग कर सकते हैं । for(;b==62?a>c:a<c;a+=d)
रिले

के लिए काम नहीं करता हैf(1,'<'3,1);
रोमन Gräf

एक ... हाँ, दोनों तरफ गणित की आवश्यकता है; for(b-=61;b*a>b*c;a+=d)एक बाइट के लिए काम करता है; लेकिन ऐसा करता है for(;b-62?a<c:a>c;a+=d)
एच वाल्टर्स

4

सी, 52 51 बाइट्स

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

f(a,b,c,d){for(;b&2?a>c:a<c;a+=d)printf("%d\n",a);}

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


1
छद्म कोड में गलती के लिए क्षमा करें, मैं प्रत्येक प्रिंट के बाद वेतन वृद्धि करता
हूं

1
एक और बाइट के b&2बजाय का उपयोग करें b^60
एच वाल्टर्स


4

पिप , 14 बाइट्स

W Va.b.ca:d+Pa

चार कमांड लाइन तर्क देता है। नकारात्मक और अस्थायी बिंदु संख्या और तुलना ऑपरेटरों का समर्थन करता है < > = <= >= !=इसे ऑनलाइन आज़माएं!

                a,b,c,d are cmdline args
W               While loop with the following condition:
  Va.b.c          Concatenate a,b,c and eval
            Pa  Print a with newline (expression also returns value of a)
        a:d+    Add d to that and assign back to a

4

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

ḢṄ+⁹;µV¿

यह एक dyadic लिंक है कि लेता है एक, ख, ग अपनी बाईं तर्क और के रूप में अपने अधिकार एक के रूप में। आउटपुट अनंत हो सकता है और STDOUT पर जाता है।

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

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

ḢṄ+⁹;µV¿  Dyadic link.
          Left argument:  a,b,c (integer, character, integer)
          Right argument: d     (integer)

       ¿  While...
      V     the eval atom applied to a,b,c returns 1:
     µ       Combine the links to the left into a chain and apply it to a,b,c.
Ḣ              Head; pop and yield a from a,b,c.
 Ṅ             Print a, followed by a linefeed.
  +⁹           Add a and the right argument (d) of the dyadic link.
    ;          Concatenate the result and the popped argument of the chain,
               yielding a+d,b,c.

कमांड-लाइन तर्क पायथन सिंटैक्स का उपयोग करते हैं और एक चरित्र और एक सिंगलटन स्ट्रिंग के बीच अंतर नहीं कर सकते हैं। यदि आप सीएलए का उपयोग करना चाहते हैं, तो आपको Fऐरे को समतल करना होगा।
डेनिस

2
अब मैं अपनी टिप्पणी को आधा करना चाहता हूं क्योंकि यह अप्रचलित है, जबकि दूसरे को आधा रखते हुए। मुझे लगता है कि मैं सिर्फ प्रासंगिक आधा दोहराता हूं और बाकी को हटा दूंगा: "ओह, ब्लोह, आपने इसे एक फ़ंक्शन के रूप में परिभाषित किया है ताकि आप पीपीसीजी नियमों के तहत निहित उत्पादन की उपेक्षा कर सकें। मुझे इसके बारे में सोचना चाहिए था।"

4

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

exec"i=%d\nwhile i%c%d:print i;i+=%d"%input()

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

कल्पना का एक बहुत शाब्दिक कार्यान्वयन। कोड टेम्पलेट लेता है, स्ट्रिंग प्रारूपण के माध्यम से इनपुट में स्थानापन्न करता है, और इसे निष्पादित करता है।


4

प्लेन टीएक्स, 88 बाइट्स

\newcount\i\def\for#1 #2 #3 #4 {\i#1\loop\the\i\endgraf\advance\i#4\ifnum\i#2#3\repeat} 

आदेश \forअनुरोधित फ़ंक्शन प्रदान करता है। इस रूप में सहेजें for.texऔर फिर इसे चलाएं और कमांड लाइन पर चर मान दर्ज करें: pdftex '\input for \for 1 < 5 1 \bye'चर मानों को रिक्त स्थान द्वारा अलग किया जाना चाहिए।


4

पायथन 3, 61 बाइट्स

एक लाइन:

e=input;exec(f'i={e()}\nwhile i{e()}{e()}:print(i);i+={e()}')

साइट पर आपका स्वागत है! नए शाब्दिक स्ट्रिंग इंटरपोलेशन सुविधा का अच्छा उपयोग। मुझे लगता है कि आप एक बाइट \tको एक स्थान के साथ बदलकर बचा सकते हैं ।
० '

थर्ड ई () के बाद \ n \ t निकालने के बाद एक ही साइज को धन्यवाद दें
G-Ox7cd



3

रूबी, 43 41 बाइट्स

->a,*i,d{a=d+p(a)while eval"%s"*3%[a,*i]}

यदि आपको एक स्ट्रिंग के बजाय रूबी प्रतीक केb रूप में लिया जा सकता है , तो आपको 38 बाइट्स मिलते हैं :

->a,b,c,d{a=d+p(a)while[a,c].reduce b}

या तो ऑनलाइन समाधान की कोशिश करो!


3

आम लिस्प, 82 80 79 73 64 बाइट्स

(defmacro f(a b c d)`(do((i,a(+ i,d)))((not(,b i,c)))(print i)))

परीक्षा

(f 1 < 10 1)

1 
2 
3 
4 
5 
6 
7 
8 
9 
NIL
CL-USER> 

-9 बाइट्स PrzemysławP के लिए धन्यवाद।


शायद आप एक मैक्रो को परिभाषित करके 9 बाइट्स बचा सकते हैं। (defmacro f(a b c d)<insert backqoute here>(do((i,a(+ i,d)))((not(,b i,c)))(print i)))उपयोग:(f 1 < 10 1)

@ PrzemysławP फिर से धन्यवाद!
coredump

3

PHP, 69 65 बाइट्स

for(list(,$i,$b,$c,$d)=$argv);$b<"="?$i<$c:$i>$c;$i+=$d)echo"$i
";

'-R' के साथ चलाएं; इनपुट के रूप में कमांड लाइन तर्क प्रदान करते हैं।

के लिए सिर्फ एक बाइट अधिक 4 अधिक बाइट्स, मैं हर ऑपरेटर ले जा सकते हैं:

for(list(,$i,$b,$c,$d)=$argv;eval("return $i$b$c;");$i+=$d)echo"$i
";

हाँ, बुराई का निष्कासन। क्या आप जानते हैं कि यह कुछ वापस कर सकता है?


शॉर्टहैंड विनाशकारी [,$i,$b,$c,$d]=$argv;4 और बाइट्स बचाएगा;
लेकिन PHP 7.1 चुनौती को स्थगित कर देता है।


नीट! मुझे यकीन नहीं था कि जब मैं हर आम ऑपरेटर को शामिल करूं, तो मुझे चुनौती देनी चाहिए, फिर मुझे याद आया कि वे सभी समान नहीं हैं (उदाहरण के लिए लुआ में! =)
सिगमेई

वाह, ईश्वर बुराई है।
साइबर

यह मुझे लगता है कि आप इसे छोटा बनाने के लिए PHP 7.1 का उपयोग कर सकते हैं। अगर ऐसा नहीं है तो list4 के बाइट्स और 4 के बाइट्स को शॉर्ट सिंटैक्स के साथ इस्तेमाल किया जाता है
Jörg Hülsermann

@PHP 7.1 चुनौती को स्थगित करता है; लेकिन इसके लिए धन्यवाद list()
टाइटस

2

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

{.say for $^a,*+$^d...^*cmp$^c!= $^b.ord-61}

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

{                                          }  # A lambda.
          $^a                                 # Argument a.
             ,*+$^d                           # Iteratively add d,
                   ...^                       # until (but not including the endpoint)
                       *cmp$^c                # the current value compared to c
                                              # (less=-1, same=0, more=1)
                              != $^b.ord-61.  # isn't the codepoint of the b minus 61.
 .say for                                     # Print each number followed by a newline.

यदि संख्याओं के मान के रूप में (संभावित रूप से अनंत) अनुक्रम को वापस करना ठीक है Seq, तो संख्याओं को प्रिंटआउट करने के बजाय, .say forभाग को हटाया जा सकता है, जिससे इसे 35 बाइट्स में लाया जा सकता है।


2

क्लोजर, 66 63 बाइट्स

#(when((if(= %2"<")< >)% %3)(println %)(recur(+ % %4)%2 %3 %4))

-3 बाइट्स फैक्टरिंग आउट द्वारा loop। मैं चल रहे संचायक के रूप में कार्य करने के लिए init पैरामीटर का "दुरुपयोग" कर रहा हूं।

पुनरावर्ती समाधान (TCO के साथ)। पूर्वगामी कोड में टिप्पणियां देखें। मैंने एक गैर-TCO पुनरावर्ती समाधान की कोशिश की, और यह 67 बाइट्स होने तक समाप्त हो गया।

मैं क्लोजर में इस बीट को देखना पसंद करूंगा! मुझे लगता है कि यह सबसे छोटा है जो मुझे मिल सकता है।

(defn my-for [init-num com-str com-num inc-num]
  (let [op (if (= com-str "<") < >)] ; Figure out which operator to use
    (when (op init-num com-num) ; When the condition is true, print and recur
      (println init-num)
      (recur (+ init-num inc-num) com-str com-num inc-num))))
    ; Else, terminate (implicit) 

ओह, मैं इस जवाब पर ध्यान नहीं दिया। #(when(({">">"<"<}%2)% %3)(println %)(recur(+ % %4)%2 %3 %4))हो जाएगा 61 बाइट्स, whenमेरे साथ अपने संयोजन ({">">"<"<}%2)
निकोनिरह

2

ग्रूवी, 51 बाइट्स

{a,b,c,d->while(Eval.me("$a$b$c")){println a;a+=d}}

यह एक अनाम क्लोजर है। इसे ऑनलाइन आज़माएं!

सावधानी - यदि आप इसके साथ परीक्षण करना चाहते हैं groovy console, तो सुनिश्चित करें कि जब इनपुट एक अनंत लूप का कारण बनता है, तो आप पूरी प्रक्रिया को मार देंगे। मैंने इस पर ध्यान दिया ~ रैम के 5 गीगा खपत के बाद।


2

QBIC , 51 40 बाइट्स

:;::{?a┘a=a+c~A=@<`|~a>=b|_X]\~a<=b|_X

और पोस्ट करने के तीन मिनट बाद मुझे एहसास हुआ कि मैं टर्मिनेटर लॉजिक को आसान बना सकता हूं ...

:;::      Consecutively read a, A$, b and c from the command line
{?a┘      Start an infinite loop; print a, add a newline to the source
a=a+c     increment a
~A=@<`|   If we are in LESS THAN mode
  ~a>=b   and IF we are no longer LESS
    |_X]  THEN QUIT, end if.
  \       ELSE (we're in GREATER THAN mode)
    ~a<=b IF we are no longer GREATER
    |_X   THEN QUIT
          The last IF and the loop are auto-closed

2

बैच, 94 बाइट्स

@set i=%1
@set o=gtr
@if "%~2"=="<" set o=lss
:g
@if %i% %o% %3 echo %i%&set/ai+=%4&goto g

यदि यह दूसरे पैरामीटर व्यवहार के लिए नहीं था, तो इसे 53 बाइट्स में किया जा सकता है:

@for /l %%i in (%1,%4,%n%)do @if not %%i==%3 echo %%i

यह बस कुछ नहीं करता है अगर चरण में गलत संकेत है। अतिरिक्त परीक्षण इसलिए है क्योंकि बैच का forलूप लूप वेरिएबल को अंतिम मान के बराबर करने की अनुमति देता है।


2

क्लोजर, 66 बाइट्स

#(loop[i %](if(({">">"<"<}%2)i %3)(do(println i)(recur(+ i %4)))))

यह 55 बाइट्स के रूप में हो सकता है <और >क्लोजर में कार्य कर रहे हैं:

(def f #(loop[i %](if(%2 i %3)(do(println i)(recur(+ i %4))))))
(f 1 < 10 1)

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

फ़ंक्शन के लिए बी की अनुमति देना कुछ भाषाओं को अनुचित लाभ देगा :)
सिगमेई

यह सच है, लेकिन सबसे अधिक भाषाओं मुझे लगता है कि मैं के बारे में पता की अनुमति देने से ज्यादा लाभ नहीं होगा <करने के बजाय "<", Clojure को छोड़कर।
निकोनिरह

@ सयगमी सच्चा। हालांकि यह मीठा मीठा होगा। आपको उस कॉल करने का दोष नहीं दिया जा सकता।
कैरिजनेट

ओपी ने कहा कि तुलना संचालक btw के लिए तार के बजाय ठीक हैं। कि एक युगल बाइट्स बचाना चाहिए।
कैरिजनेट

2

टीआई-बेसिक, 41 34 बाइट्स

Prompt A,Str2,Str3,D
While expr("A"+Str2+Str3
Disp A
A+D->A
End

1
जिस तरह से एक TI कैलकुलेटर काम करता है, कई प्रतीकों को एक बाइट के रूप में संग्रहीत किया जाता है। Prompt , Str2, Str3, While , expr(, Disp , ->, और Endसभी एकल-बाइट प्रतीक हैं। मैं 29 बाइट्स गिनता हूं।
पावेल

@ पावेल आपकी रुचि के लिए धन्यवाद! हालांकि यह सच है कि TI-Basic टोकन है, सभी टोकन एक बाइट नहीं हैं। उदाहरण के लिए, Str2, Str3, और expr(सभी दो-बाइट टोकन हैं। एक-बाइट टोकन की सूची देखने के लिए, tibasicdev.wikidot.com/one-byte-tokens
टिम्कट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.