আপনার "নিজস্ব" নির্দেশের নিজস্ব


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একটি পূর্ণসংখ্যা যা প্রতিটি লুপে আইতে যুক্ত হয়।

এটি কোড-গল্ফ, সংক্ষিপ্ত উত্তরটি জিতল!


1
স্টাডআউটে মুদ্রণের পরিবর্তে কোনও ফাংশন থেকে তালিকা / সিকোয়েন্স হিসাবে নম্বরগুলি কী ফেরানো যেতে পারে?
17'7 এ স্মিল্লা

@ এসএমএলস নাহ দুঃখিত, আউটপুট অবশ্যই উদাহরণগুলির মতো হবে!
সিগমেই

1
এটি বলে যে আমার কোডটি সিউডো কোডটি অনুসরণ করবে এবং একটি রয়েছে print "\n"তবে আমি প্রতিটি লাইনের জন্য জাভাস্ক্রিপ্টের সতর্কতা ব্যবহার করছি। এটি কি গ্রহণযোগ্য হবে, বা আমার উত্তরটি আরও দীর্ঘ করার পরিবর্তে আমাকে কনসোল.লগ ব্যবহার করতে হবে?

2
আপনি আউটপুট করার উপায় হিসাবে সতর্কতা ফাংশনটি ব্যবহার করতে পারেন তবে আপনি একাধিক সতর্কতা ব্যবহার করতে পারবেন না। এমন কিছু alert("23\n24\n25");কাজ করবে যেখানে alert("23"); alert("24"); alert(25);না হয়
Sygmei

উত্তর:


25

জাভাস্ক্রিপ্ট (ES6),  44  43 56 বাইট

ETH প্রডাকশনগুলি সম্পাদনা করে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে
: আউটপুট প্রয়োজনীয়তা মেনে চলার জন্য ঠিক করা হয়েছে

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

পরীক্ষা


সুযোগের দুর্দান্ত ব্যবহার!
ETH প্রোডাকশনগুলি

আমি মনে করি আপনি evalবাইট সংরক্ষণ করতে পুনরায় (a,b,c,d)=>{for(;eval(a+b+c);a+=d)alert(a)}
সাজিয়ে তুলতে পারেন

@ ইথ প্রডাকশন আহ, হ্যাঁ সুন্দর!
আর্নল্ড

5
টুটুর সাথে এটি একটি 44!
'16 এ 16

এটি স্পেসিফিকেশন অনুসরণ করে না যেখানে আউটপুট প্রতিটি লাইনের পরে U + 000A এর সাথে লাইন-বাই-লাইন থাকে।
জোয়

17

জাভাস্ক্রিপ্ট (ES6), 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 এর সাথে লাইন-বাই-লাইন থাকে।
জোয়

@ জোয়ি এটি কেবল ছদ্ম-কোড, তবে আমি এই বিষয়ে ওপিকে জিজ্ঞাসা করব।

@ মাস্টারজাঘ: বিকল্প আউটপুট ফর্ম্যাটগুলি সম্পর্কে ইতিমধ্যে একটি প্রশ্ন ছিল যা প্রত্যাখ্যান করা হয়েছিল।
জোয়


13

জেলি , 12 বাইট

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

এটি অনলাইন চেষ্টা করুন!

জেলি সংক্ষেপে পুনরাবৃত্তি করার, পরিসীমা তৈরি ইত্যাদি করার অনেকগুলি উপায় রয়েছে। তবে, সি ++ এর আচরণটি আয়না করা মোটামুটি শক্ত, বর্ধন 0 হওয়ার মতো বিশেষ ক্ষেত্রে, লুপটি শুরু হওয়ার আগে শেষ হওয়া (অসমতার পিছনে হওয়ার কারণে) ), এবং বৃদ্ধিটি ভুল দিকে যাচ্ছে (সুতরাং লুপটির প্রস্থান শর্তটি স্বাভাবিকভাবে পূরণ করা যায় না)। যেমন, এই সমাধানটি মূলত সি ++ এর সরাসরি অনুবাদ, যদিও এটি জেলি প্রোগ্রামের চেয়ে সাধারণত নিম্ন স্তরের করে তোলে। ভাগ্যক্রমে, সি ++ এর স্বাক্ষরিত পূর্ণসংখ্যার ওভারফ্লো (প্রশ্নটি ব্যবহার করে 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)

প্রোগ্রামটি ক্রাশ করা জেলির অন্তর্নিহিত আউটপুটটি বন্ধ করার সবচেয়ে নিখুঁত উপায় (অন্যথায়, এটি কাউন্টারটির চূড়ান্ত মান আউটপুট করবে); এটি স্ট্যাডারগুলিতে একগুচ্ছ ত্রুটি বার্তাগুলি তৈরি করে, তবে আমরা সাধারণত তা অনুমোদিত হওয়ার বিষয়টি বিবেচনা করি।

ঘটনাচক্রে, লুপটি শুরু হওয়ার আগে লুপের কাউন্টারটি বর্তমান মান দিয়ে শুরু করা হয়। প্রোগ্রামটির শুরুতে লুপটি উপস্থিত হওয়ার সাথে সাথে এটিই প্রথম ইনপুট হবে।


আপনি পরিবর্তন হতে পারে tথেকে কোন দুর্ঘটনায় আছে। শিরোনাম একটি খালি তালিকার ফলস্বরূপ যার জন্য জেলির অন্তর্নিহিত মুদ্রণটি কিছুই দেয় না।
জোনাথন অ্যালান

@ জোনাথন অ্যালান: এটি আসলে যা করে তা হ'ল 2 থেকে প্রদত্ত মান পর্যন্ত একটি পরিসীমা তৈরি করে, যা অবশ্যই একটি অন্তর্নিহিত মুদ্রণের উপর দৃশ্যমান।

আহ, আমি অবশ্যই সেই তত্ত্বটি নেতিবাচক অঞ্চলে শেষ করে একটি লুপ দিয়ে পরীক্ষা করেছি; প্রকৃতপক্ষে একটি পরিসীমা স্পষ্টতই তৈরি করা হয়েছে।
জনাথন অ্যালান

আহ, এটি 12 টি অক্ষর, তবে এটি 12 বাইট নয়?
ক্রানচার

@ ক্রাঙ্কার: জেলি তার নিজস্ব এনকোডিং ব্যবহার করে যাতে ভাষার দ্বারা ব্যবহৃত প্রতিটি অক্ষরকে একক বাইট দ্বারা উপস্থাপন করা হয় (এটি কেবল 256 টি আলাদা অক্ষর ব্যবহার করে)। কোড পৃষ্ঠা পৃষ্ঠা ৪77 এর মতো এটি সুপরিচিত কিছু ব্যবহার না করার কারণটি এটি টাইপ করা সহজ করা (আমার অর্থ, এটি টাইপ করা এত সহজ নয়, তবে জিএস 2 এর মতো ভাষার চেয়ে এটি সহজ)। এই প্রোগ্রামটির একটি হেক্সডাম্প দীর্ঘ 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 মান ব্যবহার করা একটি বাইট সংরক্ষণ করে।
রিলে


আমি এই সংকলন বিশ্বাস করি না।
চিফ টুপেনসিল 21

@ চিফটিওপেনসিলস এটি একটি ফাংশন। এটি সংকলন করার জন্য আপনাকে তার চারপাশে একটি পরীক্ষা প্রোগ্রাম লিখতে হবে।
wizzwizz4

@ wizzwizz4, স্পষ্টতই। কিন্তু এখনও কাজ করে না। ইহাকে একটি লাথি দাও. এছাড়াও, আমার বোধগম্যতা চালানোর জন্য প্রয়োজনীয় সমস্ত বাইট nts
চিফ টুপেনসিলস

7

05 এ বি 1 ই , 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 নেই :)
সিগমেই

আমার পেটিট কম্পিউটার আছে, তাই দুর্দান্ত ধারণা! আমি এই জাতীয় কিছু চেষ্টা করব ...
পাইথন-বি 5

আপনি READ1 বাইট সংরক্ষণ করে একটি বিবৃতি ব্যবহার করতে পারেন ।
ckjbgames

@ckjbgames কিভাবে?
12 মে 21

@ 12Me21 স্মাইলব্যাসিক ম্যানুয়ালগুলি পরীক্ষা করুন। এটি স্মাইলব্যাসিকের জন্য নির্দেশাবলীর তালিকায় থাকা উচিত।
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;}

এটি কি সি বা সি ++?
betseg

10
সি ++ এর কোন বাস্তবায়ন? (আমি কৌতূহল করছি আপনি কীভাবে using namespace stdবিনা মূল্যে কিছু পান )
এইচ ওয়াল্টাররা

না iএ শুরু আছে a, না 0? আপনি কেবল ব্যবহার করতে পারেন aএবং iপুরোপুরি এড়িয়ে যেতে পারেন এবং '>' এর ASCII মান ব্যবহার করতে পারেন। for(;b==62?a>c:a<c;a+=d)
রিলে

জন্য কাজ করে নাf(1,'<'3,1);
রোমান Graf

হ্যাঁ ... হ্যাঁ, উভয় পক্ষেই গণিতের প্রয়োজন; 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¿

এটি একটি ডায়াডিক লিঙ্ক যা a, b, c কে তার বাম আর্গুমেন্ট হিসাবে এবং d তার ডান হিসাবে গ্রহণ করে। আউটপুট অসীম হতে পারে এবং 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অ্যারের সমতল করতে একটি sertোকাতে হবে।
ডেনিস

2
এখন আমি আমার অর্ধেক মন্তব্য অপ্রচলিত হিসাবে মুছে ফেলতে চাই, অন্য অর্ধেক রেখেই। আমি অনুমান করি যে আমি কেবলমাত্র প্রাসঙ্গিক অর্ধেকটি পুনরাবৃত্তি করব এবং বাকী অংশটি মুছব: "ওহ, ব্লাফ, আপনি এটিকে একটি ফাংশন হিসাবে সংজ্ঞায়িত করেছেন যাতে আপনি পিপিসিআই বিধি অনুসারে অন্তর্নির্মিত আউটপুটটিকে উপেক্ষা করতে পারেন I আমার সে বিষয়টি চিন্তা করা উচিত ছিল।"

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কোনও স্থান প্রতিস্থাপন করে বাইট সংরক্ষণ করতে পারবেন ।
0 '

আপনাকে ধন্যবাদ। তৃতীয় ই () এর পরে \ n \ t অপসারণের পরেও একই মাপটি ধন্যবাদ
জি-অক্স 7cd




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 বাইটস প্রেজেমিয়াউপিকে ধন্যবাদ।


ম্যাক্রো সংজ্ঞায়িত করে আপনি 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)

@ প্রজেমেসোয়াউপ আবারও ধন্যবাদ!
coredump

3

পিএইচপি, 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 টি বাইট সাশ্রয় হবে;
কিন্তু পিএইচপি 7.1 চ্যালেঞ্জ পোস্ট করে।


ঝরঝরে! চ্যালেঞ্জটি তৈরি করার সময় আমি নিশ্চিত ছিলাম না যে আমি যদি প্রতিটি সাধারণ অপারেটরকে অন্তর্ভুক্ত করি তবে আমি মনে রেখেছিলাম যে তারা সকলেই এক নয় (উদাহরণস্বরূপ
লুয়ায়

ওহ, খারাপ খারাপ কাজ।
সাইবারবিত

আমার কাছে মনে হচ্ছে আপনি পিএইচপি 7.1 কে আরও ছোট করে তুলতে পারেন। যদি এটি না listহয় তবে সংক্ষিপ্ত বাক্য গঠন সহ 4 বাইট প্লাস 4 বাইট সংরক্ষণ করুন
জার্গ হালসারম্যান

@ পিএইচপি 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। আমি চলমান সঞ্চালক হিসাবে কাজ করার জন্য প্যারামিটারটিকে "আপত্তিজনক" করছি।

পুনরাবৃত্তির সমাধান (টিসিও সহ) with প্রিগল্ফড কোডে মন্তব্যগুলি দেখুন। আমি একটি নন-টিসিও রিকারসিভ সলিউশন চেষ্টা করেছি এবং এটি 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নিশ্চিত করুন যে ইনপুট যখন অসীম লুপের কারণ হয়ে থাকে তখন আপনি পুরো প্রক্রিয়াটি মেরে ফেলেছেন। এটি noticed 5 জিগ র‌্যাম খাওয়ার পরে আমি এটি লক্ষ্য করেছি।


2

কিউবিআইসি , 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

Clojure, 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)

আমি এখানে মানচিত্রের ব্যবহার পছন্দ করি। আমি কখনই ভাবিনি যে এটি আমার পথে মারবে। এছাড়াও আকর্ষণীয় যে কিছুটা ভিন্ন ভিন্ন দৃষ্টিভঙ্গি থাকা সত্ত্বেও আমাদের উভয় প্রাথমিক সংখ্যা একই ছিল।
কারসিজিনিট

বি-কে ফাংশন হতে
দিলে

সত্য, তবে আমি মনে করি যে বেশিরভাগ ভাষাগুলি আমি জানি ক্লোজুর বাদে <পরিবর্তে অনুমতি দেওয়ার ফলে খুব বেশি সুবিধা হবে না "<"
নিকোনিহার

পছন্দ করুন এটা freakin যদিও মিষ্টি হবে। আপনাকে কল করতে দোষ দিতে পারে না।
কারসিজেনিকেট

ওপি বলেছে তুলনা অপারেটরদের বিটিডব্লিউর জন্য স্ট্রিংয়ের পরিবর্তে অক্ষরগুলি ভাল। এটি একটি দম্পতি বাইট সংরক্ষণ করা উচিত।
কারসিজেনিকেট

2

টিআই-বেসিক, 41 34 বাইট

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

1
টিআই ক্যালকুলেটর যেভাবে কাজ করে, অনেক চিহ্ন একটি একক বাইট হিসাবে সংরক্ষণ করা হয়। Prompt , Str2, Str3, While , expr(, Disp , ->, এবং Endসব একক বাইট প্রতীক। আমি 29 বাইট গণনা।
পাভেল

@ পাভেল আপনার আগ্রহের জন্য ধন্যবাদ! যদিও এটি সত্য যে টিআই-বেসিক টোকেনাইজড, সমস্ত টোকেন এক বাইট নয়। উদাহরণস্বরূপ, Str2, Str3, এবং expr(সব দুই-বাইট টোকেন হয়। ওয়ান-বাইট টোকেনের তালিকা দেখতে, টিবাসিকদেব.উইকিডোট.com
টিমটেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.