আমি এমনকি না… আমি কেবল অদ্ভুত!


36

আপনার কাজটি সহজ: একটি প্রোগ্রাম লিখুন যা ইনপুট হিসাবে পূর্ণসংখ্যা গ্রহণ করে এবং বিজোড় হলে আউটপুট দেয় এবং অন্যথায় কিছু না করে (থামার অনুমতি নেই)। চ্যালেঞ্জটি হ'ল, আপনি কেবল বিজোড় বাইট ব্যবহার করতে পারেন।

আপনি allyচ্ছিকভাবে আউটপুটে একটি ট্রেলিং নিউলাইন যুক্ত করতে পারেন।

এটি কোড-গল্ফ, (বিজোড়) বাইট জেতে সংক্ষিপ্ত উত্তর।

স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ। তদতিরিক্ত, আপনি ভাষার সংস্করণগুলি ব্যবহার করতে পারবেন না, যা এই চ্যালেঞ্জ পোস্ট করার চেয়ে নতুন।

উদাহরণ ইনপুট> আউটপুট:

13 > 13

42 >


10
আমি এই চ্যালেঞ্জটিকে অগ্রাহ্য করেছি কারণ এটি একটি "ড এক্স এক্স ওয়াই ওয়াই" চ্যালেঞ্জ।
ফুটো নুন

4
হুবুহু does nothing otherwiseমানে কি? হাসকেলে টাইপযুক্ত একটি ফাংশন Int -> Int হয় একটি পূর্ণসংখ্যা দেয় বা থামায় না বা কিছু ত্রুটি নিক্ষেপ করে না। যদি ইনপুটটি সমান হয় তবে এটি অবশ্যই প্রত্যাবর্তন করা উচিত নয়, তাহলে এই ক্ষেত্রে কোনও ত্রুটি থামানো বা নিক্ষেপ করা গ্রহণযোগ্য হবে না?
লাইকনি

2
আপনি যদি নিজের উত্স কোডটি ব্যবহার করতে পারেন কিনা তা জানতে চান, আপনার ব্রাউজার কনসোলে এই স্ক্রিপ্টগুলি ব্যবহার করে দেখুন। বৈধ অক্ষরসেট তৈরি করুন: alphabet=new Set(Array(256).fill(0).map((v,i)=>i).filter(v=>v%2).map(String.fromCharCode));। চেক উৎস বৈধ: [..."SOURCE CODE"].every(v=>alphabet.has(v))। উৎস অবৈধ অক্ষর দেখুন: [...new Set("SOURCE CODE")].filter(v=>!alphabet.has(v))। আপনার উদ্ধৃতিগুলি, "=> \";)
এড়াতে ভুলবেন না

14
@ ল্যাকইনুন "ডু এক্স বি ওয়াই ওয়াই" সাধারণ সীমাবদ্ধ-উত্স চ্যালেঞ্জগুলি উল্লেখ করে না , তবে এমন চ্যালেঞ্জগুলি যা আপনাকে কোনও ভাষার কিছু বৈশিষ্ট্য ব্যবহার করতে নিষেধ করে। এই চ্যালেঞ্জটি তা নয় এবং এর মধ্যে এমন কোনও সমস্যা নেই যা প্রকৃত "ড এক্স এক্স ওয়াই ওয়াই" কে সমস্যাযুক্ত করে তোলে।
মার্টিন ইন্ডার

1
@ লাইকনি যেমন ইতিমধ্যে কিছু উত্তর রয়েছে যা সীমাহীন লুপে যায়, আমি বলব যে এই জাতীয় আচরণ প্রদর্শন করা ঠিক আছে। ফিরে না আসা কিছুই না করে বোঝানো যায় as
এম হার্জক্যাম্প

উত্তর:



67

Lenguage , 645529908926937253684695788965635909332404360034079 9394157991500940492270727190763049448735 1174269748937617561533841898064735499551 2293382937520069758100171520285996319 বাইট

এটি প্রায় 2 ডুডেকিলিয়ন বাইটের সমান।

ফাইলটি নিম্নলিখিত ব্রেনফাক প্রোগ্রামটিতে অনুবাদ করে:

,[<<+>+>-]<[>>+<<-]+>>[-[->]<]<[<[<]>.<]

সর্বাধিক 256 মান সহ একটি ASCII কোড হিসাবে ইনপুট নেয়। মোড়ানো ব্যবহার করে।


@ ওক্স আমার ভুল তবে আপনি শুধু ব্যবহার করবেন না কেন ,[<<+>+>-]<[>>+<<-]+>>[-[->]<]<[<[<]>.<]?
ব্যবহারকারী 202729

1
কীভাবে ,[[>]++[-<]<+>>]>[<<<.<]কেবল 3452857532394791089951 বাইটের জন্য?
জো কিং

আসলে, যেহেতু অসীম লুপগুলি অনুমোদিত, তাই ,-[-->++<]>+.কাজ করে
জো কিং

20

x86-64 মেশিন কোড, 8 বাইট

ব্রুস ফোর্টের সমাধান থেকে অনুপ্রাণিত , তবে সামান্য সামান্য নীচে। :-)

8D 07          lea      eax, [rdi]    ; put copy of input parameter in EAX
D1 EF          shr      edi, 1        ; shift LSB into CF
             InfiniteLoop:
F3 73 FD       rep jnc  InfiniteLoop  ; test CF; infinite loop back here if input was even
C3             ret                    ; return with original input in EAX if it was odd

একটি একক পূর্ণসংখ্যা পরামিতি নেওয়া হয় EDIসিস্টেম ভিএমডি 64 কলিং কনভেনশন অনুসরণ করে রেজিস্টারে ।

প্রাথমিকভাবে এই মানটির একটি অনুলিপি তৈরি করা হয়েছে এবং EAXএটি যথাযথভাবে ফিরিয়ে দেওয়া যেতে পারে। ( LEAস্বাভাবিকের পরিবর্তে ব্যবহৃত হয়)MOV কারণ আমাদের বিজোড় বাইট সহ একটি নির্দেশনা প্রয়োজন))

তারপরে, মানটি EDI1 দ্বারা ডানদিকে স্থানান্তরিত হয় যা শিফিট-অফ বিটটিকে ক্যারি পতাকা (সিএফ) এ রাখে। সংখ্যাটি সমান হলে এই বিটটি 0 হবে বা বিজোড় হলে 1 হবে।

তারপরে আমরা JNCনির্দেশ ব্যবহার করে সিএফ পরীক্ষা করি , যা কেবল সিএফ 0 হলে (যেমন, সংখ্যাটি সমান ছিল) কেবল শাখা করবে। এর অর্থ হ'ল আমরা এমনকি মানগুলির জন্য একটি অসীম লুপে যাব। বিজোড় মানগুলির জন্য, আমরা এর মধ্যে পড়ি এবং আসল মানটি (এর মধ্যে)EAX ) ফিরে আসে।

JNCনির্দেশের সাথে কিছু কৌশল আছে , যদিও এটির REPউপসর্গ রয়েছে! সাধারণত, REPউপসর্গগুলি কেবল স্ট্রিং নির্দেশাবলীর সাথেই ব্যবহৃত হয় তবে ইনটেল এবং এএমডি ম্যানুয়াল উভয়ই সম্মত হয় যে অপ্রাসঙ্গিক / অতিশয় / অপ্রয়োজনীয় REPউপসর্গগুলি উপেক্ষা করা হয়, তাই আমরা এটি 3 বাইট দীর্ঘ করতে শাখার নির্দেশে একটি নিক্ষেপ করি। এইভাবে, জাম্প নির্দেশে এনকোড হওয়া আপেক্ষিক অফসেটটিও বিজোড়। (এবং, অবশ্যই REPএটি একটি বিজোড় বাইট উপসর্গ।)

শুভতা ধন্যবাদ RETএকটি বিজোড় বাইট ব্যবহার করে এনকোড করা হয়েছে!

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


আপনি যদি ভাবছেন না যে মানটি বিজোড় হলে তা ফেরত দেওয়া বা এটি অসীম লুপের মধ্যে চলে যাওয়া (এমনকি আপনি কখনই ফিরে আসেন না) চ্যালেঞ্জের "আউটপুট" প্রয়োজনীয়তাগুলি পূরণ করে, বা আপনি আরও কিছু আকর্ষণীয় কিছু চান, এখানে একটি ফাংশন রয়েছে এটি সিরিয়াল পোর্টের মানকে আউটপুট করে (তবে এটি কেবল বিজোড় হলে অবশ্যই)।

x86-64 মেশিন কোড (সিরিয়াল পোর্টে আউটপুট), 17 বাইট

8D 07         lea   eax, [rdi]   ; put copy of input parameter (EDI) in EAX

B1 F7         mov   cl, 0xf7     ; put 0xF7 into low-order bits of CX
B5 03         mov   ch, 0x03     ; put 0x03 into high-order bits of CX
FE C1         inc   cl           ; increment low-order bits of CX to 0xF8 (so all together it's now 0x3F8)
0F B7 D1      movzx edx, cx      ; move CX to DX ("MOV DX, CX" would have a 16-bit prefix of 0x66)

D1 EF         shr   edi, 1       ; shift LSB of input parameter into CF
73 01         jnc   IsEven       ; test CF: branch if 0 (even), fall through if 1 (odd)
EF            out   dx, eax      ; output EAX (original input) to I/O port 0x3F8 (in DX)
            IsEven:
C3            ret                ; return

এটিকে কীটাকে আরও আকর্ষণীয় করে তোলে তা হ'ল কোডটি আরও বেশি করে , যার অর্থ কেবল বিজোড় বাইট ব্যবহার করে এনকোড করা নির্দেশাবলী ব্যবহার করে এটি করা সব থেকে বেশি চ্যালেঞ্জ ছিল। অবশ্যই এটিরও অর্থ এটি কোড গল্ফে ব্যর্থ হয়, সুতরাং এটি এক ধরণের ট্রেড অফ you আপনি আকর্ষণীয় এবং চ্যালেঞ্জিং চান বা আপনি সংক্ষিপ্ত চান?

যাইহোক, এটি আই / ও পোর্ট 0x3F8, যা একটি পিসির স্ট্যান্ডার্ড COM1 সিরিয়াল পোর্ট লিখতে x86 OUTনির্দেশিকা ব্যবহার করে । মজাদার অংশটি অবশ্যই হ'ল সমস্ত স্ট্যান্ডার্ড আই / ও পোর্টগুলির (সিরিয়াল এবং সমান্তরাল) এমনকি ঠিকানাও রয়েছে, সুতরাং এগুলি কেবল নির্দেশের নকল হিসাবে এনকোড করা যায় না বা সরাসরি কোনও রেজিস্টারে স্থানান্তরিত করা যায় না। আপনাকে প্রকৃত মানের চেয়ে কম দিয়ে আরম্ভ করতে হবে এবং তারপরে বৃদ্ধিও হবেOUT রেজিস্টারে মান করতে হবে। আপনি ম্যানিপুলেশনের জন্য নির্দিষ্ট কয়েকটি রেজিস্টার ব্যবহারের ক্ষেত্রেও সীমাবদ্ধ কারণ অপারেটর হিসাবে ব্যবহারের সময় নির্দেশিকায় বিজোড় বাইট ব্যবহার করে এনকোড করা আপনার নিবন্ধগুলি প্রয়োজন।

এছাড়াও, আমাকে লুপের শীর্ষে DXরেজিস্টারটি (নিবন্ধকের মাধ্যমে CX) আরম্ভ করতে হয়েছিল, যদিও মানটি বিজোড় হলে কেবল এটির প্রয়োজন হয়, যাতে JNCনির্দেশটি একটি বিজোড় অফসেট পাবে তা নিশ্চিত করতে । তবে, যেহেতু আমরা যে বিষয়টি এড়িয়ে যাচ্ছি তা হ'ল OUTনির্দেশনা, তাই এই সমস্ত কোডটি নষ্ট চক্র এবং ক্লোবার স্ক্র্যাচ নিবন্ধগুলি; এটি আসলে কিছুই আউটপুট দেয় না , সুতরাং এটি নিয়মগুলি ভঙ্গ করে না।

অবশেষে, এই ফাংশনটি সিরিয়াল পোর্টে আউটপুটটি সম্পন্ন বা না করে পরে ফিরে আসবে ইনপুট মানটি রেখে EAX। কিন্তু এটি আসলে কোনও নিয়ম ভঙ্গ করে না; সমাবেশ ভাষায় সমস্ত ফাংশন একটি মান দিয়ে ফিরে আসবে EAX- প্রশ্নটি কেবল এটি একটি উল্লেখযোগ্য মান বা আবর্জনা মূল্য। এটি ফাংশনের ডকুমেন্টেশন দ্বারা নির্ধারিত হয় (মূলত, এটি কোনও মান দেয় বা এটি ফিরে আসে)void ) এবং এই ক্ষেত্রে, আমি এটি কোনও মান ফেরত না হিসাবে ডকুমেন্ট করছি। :-)

এটির জন্য কোনও টিআইও লিঙ্ক নেই, কারণ এটি সিরিয়াল পোর্টগুলিতে আউটপুট বাস্তবায়ন করে না। আপনার আসল লোহা বা একটি কল্পনা দরকার।


ব্যাখ্যার জন্য +1! আপনি দ্বিতীয় লাইনে মুভ ব্যবহার করতে পারেন তবে প্রথমটিতে নয়?
এম হার্জক্যাম্প

এটি একটি MOVনির্দেশকে এনকোডিংয়ের পাশাপাশি , এর অপারেশনগুলি বাইটগুলিতেও এনকোড করতে হবে। এই ক্ষেত্রে, এটি উত্স এবং গন্তব্য নিবন্ধসমূহ হবে (যদিও অপারেশনগুলি তাত্ক্ষণিক মান হতে পারে, যা ধ্রুবকের মতো)। বিভিন্ন রেজিস্টারগুলি বিভিন্ন বাইটে ম্যাপ করে এবং সেগুলি কিছু বাইট এমনকি হয়। সুতরাং, উদাহরণস্বরূপ, আমি যা ব্যবহার করতে চাই তা হবে mov eax, ediতবে এটি 89 F8বাইটে রয়েছে। দেখুন পথ বেশি আপনি কি কখনো এনকোডিং উপর জানতে চেয়েছিলেন "কোড" বিভাগের মধ্যে এখানে । @ এম হারজক্যাম্প
কোডি গ্রে

19

জেলি , 2 বাইট

ẋḂ

এই অক্ষরগুলি বাইট মিলা 0xF7 এবং 0xBF মধ্যে জেলি এর কোড পৃষ্ঠা

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


5
এমনকি বাইট গণনা সহ এই সমাধানটি যদি চ্যালেঞ্জ জিততে পারে তবে লজ্জার বিষয় হবে ... 1 বাইট সমাধান কারও?
এম হারজক্যাম্প

9

05 এ বি 1 , 3 বাইট

Éi=

কোডটি বাইট মানগুলির সাথে মিলে যায় C9,69,3Dবা201,105,61 যা সমস্ত বিজোড়।

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

ব্যাখ্যা

É     # input % 2 == 1
 i    # if true
  =   # print without popping

= # print without newlineএটি আসলে পপিং ছাড়াই নিউলাইন দিয়ে মুদ্রণ করবে
এরিক দি আউটগলফার

@ এরিকথ আউটগলফার: সত্য। আমি ব্যাখ্যা ঠিক করব।
এমিগিনা

দুর্ভাগ্যক্রমে, É×কাজ করছে বলে মনে হচ্ছে না:
kalsowerus

@ ক্যালসওয়ারাস: হ্যাঁ, আমি এটিও লক্ষ্য করেছি। Dসামনে সামনে সঠিকভাবে কাজ করে তবে এটি এমনকি কোনও ছোটও নয়। এটি কাজ না করার কারণটি হ'ল বারবার অন্তর্নিহিত ইনপুটটি দ্বিতীয় যুক্তি হিসাবে নেওয়া হয়।
এমিগিনা

@ এমিগানা কিন্তু অদ্ভুত বিষয়টি হ'ল, স্ট্যাকের উপরে দুটি শীর্ষ মানের দুটি বার অদলবদল করে, এটিও কাজ করে তোলে ...
কলসওয়ারাস


5

হাস্কেল , 36 33 বাইট

c[1]=1;c[m]=1+1+c[m-1-1];o	m=c[m]

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

ব্যবহার: o 7yiedls 7, o 8একটি অসীম লুপ প্রবেশ করে।

আসল অ্যালগরিদম হ'ল

o 1 = 1
o m = 2 + o(m-2)

প্রথম সমস্যার মুখোমুখি হ'ল জায়গার অভাব এবং (, কারণ একটি ফাংশন oযা আর্গুমেন্ট নেয় mসাধারণত হিসাবে o m=...বা হিসাবে সংজ্ঞায়িত করা হয় o(m)=...। তবে আমি জানতে পেরেছি যে একটি ইনলাইন মন্তব্য {- some comment -}টোকেন ডিলিমিটার হিসাবেও কাজ করে, সুতরাং o{--}m=...প্রদত্ত বিধিগুলির অধীনে একটি সংজ্ঞা দেওয়া সম্ভব। সম্পাদনা: আরজান জোহানসেন উল্লেখ করেছেন যে কেউ তিনটি বাইট সংরক্ষণ করে একটি জায়গার পরিবর্তে একটি ট্যাব অক্ষর ব্যবহার করতে পারে: o m=...

দ্বিতীয় সমস্যাটি ছিল रिकर्सিভ কল o(m-2)-2ঠিক -1-1, তবে এখানে মন্তব্য কৌশলটি কাজ করে না কারণ বন্ধনীগুলি প্রয়োজনীয়। আমি একটি সংখ্যার সমন্বিত একক তালিকায় ফাংশনটি কাজ করে এটি স্থির করেছিলাম: o[m-2]তবে, এটি ইনপুট সরবরাহের কোনও আদর্শ উপায় নয় বলে, আমি কোনও সহায়ক ফাংশনে গণনাটিকে আউটসোর্স করেছি cযা তালিকায় কাজ করে যা cথেকে oসঠিক বিন্যাস রয়েছে has ।


আপনি কোনও জায়গার পরিবর্তে একটি ট্যাব ব্যবহার করতে পারেন।
janrjan জোহানসেন

@ আরজান জোহানসেন আমি যাচাই করতে পারি যে এটির \tপরিবর্তে এটির সাথে কাজ করে {--}
ESlanging ফল

@ আরজান জোহেনসেন ধন্যবাদ, এটি জেনে ভাল।
লাইকনি

5

পাইথন আরপিএল, 38 বাইট

ব্যবহার করে পূর্বের এক্সপ্রেশনটির মান হিসাবে ইনপুট নেয় _। আউটপুটটি একটি স্ট্রিং হবে (বিজোড়ের জন্য পূর্ণসংখ্যার স্ট্রিং প্রতিনিধিত্ব, বা সমান জন্য খালি স্ট্রিং)।

'%s'%[['']+[_]][-1][[_%[1+1][-1]][-1]]

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

একটি আসল শেল এ চালানোর জন্য, আপনি এটি এখানে চেষ্টা করতে পারেন । ইনপুট টাইপ করুন, এন্টার চাপুন। কোডটি আটকান, এন্টার চাপুন।

ব্যাখ্যা:

এটি বের করতে কিছুক্ষণ সময় নিল। এখানে কোন গুণ নেই, শাখা নেই, কাটনা নেই, কমা নেই, পিরিয়ড থাকবে না, আমদানি হবে না, কোন বন্ধনী নেই, নেই exec, নেই eval, নেইprint , এবং কোন কার্য নেই। স্টার্ডার ব্যবহার করে সেই আউটপুটটিতে কাজ করার জন্য আমি একটি সমাধান পেয়েছি, কিন্তু তখন আমি বুঝতে পেরেছিলাম যে কেবল সত্য / মিথ্যা মান নয়, আসল পূর্ণসংখ্যাকে আমাদের আউটপুট করতে হবে।

আমি বন্ধনীর পরিবর্তে বন্ধনী ব্যবহার করি [expression][-1]। সরলকরণ যা উপরের কোডটি রূপান্তর করে '%s'%(['']+[_])[_%(1+1)]

যেহেতু কোনও কমা থাকতে পারে না তাই আমি তৈরি করতে তালিকার সংযোজন ব্যবহার করেছি ['',_]। স্ট্রিং বিন্যাস ব্যবহার করে, পছন্দসই ফলাফল প্রাপ্ত হয়।


যশ। বোনাস হিসাবে এটি রুবি আইআরবি-র জন্যও কাজ করে :) নিতপিক: বিজোড় সংখ্যার জন্য একটি স্ট্রিং ফিরিয়ে দেওয়া ঠিক আছে কি, এমনকি সংখ্যার জন্য খালি স্ট্রিংটি ফিরিয়ে দেওয়া কি ঠিক হবে?
এরিক ডুমিনিল

কিছুই না করা এবং মুদ্রণ করা বা কিছুই ফিরিয়ে দেওয়া এক নয়, আমি ভাবি। একরকম, খালি স্ট্রিং কিছুই নয়।
mbomb007

হ্যাঁ, আমি সত্যিই নিটপিক করছিলাম। এটি এখনও কিছুই না করে একটি স্ট্রিং প্রদান করে। পাইথন আরইপিএলে, আমি বলব যে Noneএটি এর চেয়ে আরও ভাল ম্যাচ হবে ''। যাইহোক, এটি আমার কাছে আসতে পারে তার চেয়ে 10000 গুণ ভাল।
এরিক ডুমিনিল

@EricDuminil আমি ফিরে পারে FalseNoneযদিও আপনি পেতে পারেন আইডিক ।
mbomb007

4

সিজেম, 6 বাইট

q_iY%%

113 95 105 89 37 37

এই প্রোগ্রামটি ইনপুটের গেলিক ভাষার 2 লাগে (কল এটা r পর্যন্ত) এবং প্রতি ছাপে ইনপুট স্ট্রিং তম অক্ষর। যদি ইনপুট নম্বরটি বিজোড় হয় তবে এটি পুরো স্ট্রিংটি মুদ্রণ করে তবে প্রতিটি 0 তম অক্ষর মুদ্রণ করতে বলা হলে প্রোগ্রামটি ত্রুটি ছুঁড়ে দেয়।

এখানে চেষ্টা করুন


নিস! আমি পোস্ট করতে যাচ্ছি qi_Y%]W%{}/M?এবং তারপর আমি এটি দেখেছি।
ফল ফলবান

4

কিউবিক্স , 23 19 17 বাইট

;;u!I1)%/;O=!;;/;

চেষ্টা করে দেখুন!

@, যা একটি কিউবিক্স প্রোগ্রামটি সমাপ্ত করে, এটি এসসিআই 64৪, সুতরাং দুর্ভাগ্যক্রমে এটি বাস্তবে বিজোড়তার জন্য পরীক্ষার পরে অসীম লুপে প্রবেশ করে। টিআইওর কোনও লিঙ্ক নেই যেহেতু এটি শেষ হয়ে যাবে।

= (ascii 61) হ'ল কিউবিক্সের একটি অন-অপশন।

এটি পূর্ববর্তী অ্যালগরিদমের সামান্য পরিবর্তন (বাইটের সমান #) যা আসলে নেতিবাচক পূর্ণসংখ্যার জন্য কাজ করে।

কিউব সংস্করণ:

    ; ;
    u !
I 1 ) % / ; O =
! ; ; / ; . . .
    . .
    . .

অ্যালগরিদম:

  • I (73) : সংখ্যা হিসাবে ইনপুট পড়ুন
  • 1 (49) : ঠেলা 1
  • ) (41) : বৃদ্ধি
  • % (37) : মোড নিতে
  • / (47) : বাম দিকে ঘুরুন
  • ! (33) : বিজোড় হলে পরবর্তী নির্দেশনা এড়িয়ে যান
    • 1;;/; ;হয় (59): আউটপুট জন্য স্ট্যাক প্রস্তুত
    • O (79) : একটি সংখ্যা হিসাবে আউটপুট।
    • তারপরে এটি অ্যালগরিদমে পুনরায় প্রবেশ করে তবে ইনপুট সমাপ্তির জন্য Iপড়ে 0, সুতরাং আমাদের এমনকি শাখায় প্রবেশের নিশ্চয়তা দেওয়া হয়
  • u (117) : ডান হাতের ইউ-টার্ন
  • ;;;!I : লুপ, কার্যকরভাবে কিছুই করছে না।

@MickyT নেতিবাচক ইনপুট জন্য ব্যর্থ হয়, যে কারণে আমি ব্যবহার এড়ানো?
: Giuseppe

দুঃখিত, আমি এটি সঠিকভাবে পরীক্ষা করে
দেখিনি

3

কাঠকয়লা , 9 বাইট

¿﹪Iθ÷χ⁵→θ

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

মূলত এটি ডানমুখী ইনপুট ছাপে যদি এটা 10/5 এর গুণিতক (নয় ²গৃহস্থালির কাজ মধ্যে এমনকি কাঠকয়লা কোড পৃষ্ঠা )। ব্যবহৃত অক্ষরগুলি হ'ল:

  • ¿: কোড BF
  • : কোড A5
  • : কোড C9
  • θ: কোড F1
  • ÷: কোড AF
  • χ: কোড E3
  • : কোড B5
  • : কোড 13

আসলে কাছাকাছি প্রান্তটি অপ্রয়োজনীয় তবে আমি দেখলাম যে উত্তরটির একটি বিজোড় দৈর্ঘ্য থাকতে হবে ...

ব্যাখ্যা:

¿      if (
 ﹪      Modulo (
  Iθ      the input as number,
  ÷χ⁵      χ (predefined value: 10) divided by 5 = 2 ) [is 1])
 →θ      then print rightwards the input as string

আপনি মুদ্রণ করছেন এবং তারপরে ডানদিকে চলে যাচ্ছেন; ডানদিকে মুদ্রণ আসলে হবে →θ
নীল

@ নিল উফ, স্থির কমপক্ষে এটি আমার উত্তরকে অকার্যকর করে দেয় না ... :
চার্লি

3

x86_64 মেশিন কোড (লিনাক্স), 12 11 বাইট

দুর্ভাগ্যক্রমে সমান 0x80, তবে এটি এখনও কার্যকর হয়েছে (ধরে নিলে "কিছুই হয় না" মানে ফিরে না আসা):

0000000000000000 <odd>:
   0:   8d 07                   lea  (%rdi), %eax
   2:   83 e7 01                and    $0x1, %edi
   5:   83 ff 01                cmp    $0x1, %edi
   8:   75 fb                   jne       5  <odd+0x5>
   a:   c3                      retq

-1 বাইট, ধন্যবাদ @ কোডি গ্রে!

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


1
যেহেতু এটি x86-64, উত্সটি 32-বিট রেজিস্টার হওয়ার সময় lea (%edi),%eaxএকটি ঠিকানার আকারের ওভাররাইড উপসর্গ ( 0x67) প্রয়োজন। আপনি এটি করে তা দূর করতে পারেন lea (%rdi),%eax। এটি একটি বাইট সংরক্ষণ করে এবং কোডটি আরও কিছুটা দক্ষ করে তুলবে (উপসর্গগুলি ডিকোডিংয়ের গতি কমিয়ে আই-ক্যাশে পূরণ করবে)। এটিকে আরও ছোট করার জন্য আপনি করতে পারেন এমন আরও কিছু জিনিস রয়েছে তবে এটি মূলত একটি সম্পূর্ণ পুনর্লিখনকে গঠন করে, তাই আমি আমার নিজের উত্তর পোস্ট করব। :-) আমি অবশ্যই এটি upvated করেছি! (ওহ, ঠিক এখন বুঝতে পেরেছি যে আপনি লাফটি অফসেটকে বিজোড় করে তুলতে উপসর্গটি ব্যবহার করতে পারেন Well ঠিক আছে, আপনার আরও যাদু দরকার))
কোডি গ্রে

এছাড়াও, টিআইওর জন্য সত্যই চতুর সমাধান! আমি আমার বেশিরভাগ asm জবাবগুলিকে এড়িয়ে চলেছি কারণ আমি asm এ আউটপুট প্রিন্ট করতে "পাদলেখ" তে সমস্ত বয়লারপ্লেট লিখতে চাইনি। আমি অবশেষে ভেঙে গিয়েছিলাম এবং অন্য দিন এটি করেছি, তবে এটি একটি আরও ভাল ধারণা, আপনাকে অন্য যে কোনও কিছুর জন্য সি ব্যবহার করতে দেয়। আমি এখন থেকে এই চুরি করা হবে! :-)
কোডি গ্রে

আপনার ইনপুটগুলির জন্য চিয়ার্স, আমি সমাবেশে সম্পূর্ণ নুব কিন্তু এটি যথেষ্ট সহজ বলে মনে হয়েছিল! আপনার সমাধান জন্য কৌতূহল। ওহ, ক্রেডিট @ এসিলিংক্যাটে যায় - আমি নিজেই এটি চুরি করেছি;)
ბიმო

আমি আসলে আপনাকে একটি বাইট সংরক্ষণ করি নি ... আপনার এখন যা আছে তার একটি এমনকি বাইট আছে (F6JNE নির্দেশের জন্য ) রয়েছে কারণ এটির অফসেট রয়েছে। এটিই আমি আমার প্রথম মন্তব্যে সম্পাদিত সর্বশেষ প্যারেন্টিফিকাল দ্বারা বোঝাতে চাইছি। আপনি আসলে প্রয়োজন একটি বিজোড় প্রান্তিককরণ তৈরি করতে সেই প্রেফিক্স। অথবা আপনাকে কোডটি অন্য কোনও উপায়ে আবার লিখতে হবে। আমি বিভিন্ন প্রকরণের গুচ্ছ নিয়ে খেলেছি। আমি আসলে এই শেষ রাতে তাকিয়েছিলাম এবং OUTবিজোড় মানগুলিকে আউটপুট দেওয়ার জন্য একটি ভাল উপায় বের করার চেষ্টা করছিলাম , তবে সত্যিই আমার কাছে কোনও ভাল সমাধান আসেনি। আমার জন্য এখানে অন্তর্দৃষ্টিটি এমনকি মানগুলির জন্য একটি অসীম লুপে চলে যাওয়া।
কোডি গ্রে

এটি আসলেই একটি নিরীহ চ্যালেঞ্জ, কারণ যুক্তিযুক্ত সমাধানগুলির কোনওটিই কাজ করে না। এটি সত্যই আপনাকে পরীক্ষা করে x x নির্দেশের সেটটির অস্পষ্ট কোণগুলি কতটা ভাল জানেন। এমনকি আমি BTনির্দেশাবলীর পরিবার চেষ্টা করেছিলাম , যা কেউ কখনও ব্যবহার করে না (দুর্ভাগ্যক্রমে, সমস্ত নিবন্ধের এনকোডিংগুলি এমনকি বাইট)। আমি ভেবেছিলাম যে কোডটি সিরিয়াল পোর্টে লিখতে আরও আকর্ষণীয় হতে পারে , কেবল কোনও মান বা যা কিছু ফেরত দেওয়ার পরিবর্তে, তবে সেখানে জ্যাকেট বাইট গণনা করা হয় (বিশেষত যেহেতু হেক্সে সিরিয়াল পোর্টের ঠিকানাগুলি সমান!), তাই আমি এটি ছেড়ে দেওয়া।
কোডি গ্রে

3

গণিত, 20 বাইট

অ-গল্ফিং ভাষায় প্রথম সমাধান হিসাবে উপস্থিত হন।

a=1+1;g[i_/;!a\[Divides]i]=i

ইন MacintoshChineseTraditionalঅক্ষর এনকোডিং। \[Divides]হয় {161, 253}(2 বাইটস)

বিকল্প সংস্করণ (23 বাইট)

\[CapitalAlpha]=1+1;\[CapitalGamma][\[CapitalChi]_/;\[CapitalAlpha]\[LeftFloor]\[CapitalChi]/\[CapitalAlpha]\[RightFloor]\[NotEqual]\[CapitalChi]]=\[CapitalChi]

বা (ইউনিকোডে প্রদর্শিত)

Α=1+1;Γ[Χ_/;Α⌊Χ/Α⌋≠Χ]=Χ

মধ্যে Symbolঅক্ষর এনকোডিং। (কেবলমাত্র 1-বাইট অক্ষর ব্যবহার করুন)

সমাধানটি একটি ফাংশন g(বা Γ) সংজ্ঞায়িত করে যা ইনপুটটি বিজোড় হলে ইনপুটটির মূল্যায়ন করে এবং ইনপুট সমান হলে আক্ষরিক অর্থে "কিছুই না করে" (মূল্যায়ন করে না)।


+1 বাইট ( ;শেষে) যদি বাইটের সংখ্যাটি অবশ্যই সমান হয়; এবং \[Divides]বিজোড় ইউনিকোড কোডপয়েন্টও রয়েছে।
ব্যবহারকারী 202729

আপনার দরকার নেই I[1+1], আপনি কেবল ব্যবহার করতে পারেন {1+1}। এছাড়াও, আপনি ফ্লোরিং বন্ধনীগুলির বাইটগুলি বৈধ কিনা তা পরীক্ষা করে দেখেছেন? যদি তা হয় তবে আপনি তা 2থেকে পেতে পারেন \[LeftFloor]E\[RightFloor]
মার্টিন ইন্ডার

@ মার্টিনএেন্ডার কেবল মেঝেটিকে Symbolবৈধ করুন, তবে এটিরও Eনেই \[ExponentialE]
ব্যবহারকারী 202729

আমি ভয় করি যে আপনি অক্ষরগুলি ব্যবহার করতে পারবেন না D; v; না d, যেহেতু তাদের একটি এমনকি বাইট-মান রয়েছে .. :(
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন \[Divides]ম্যাথমেটিকায় একটি চরিত্র যা 2 বাইট দ্বারা উপস্থাপিত হয় {161, 253}
ব্যবহারকারী 202729

3

পার্ল, 54 বাইট

প্রয়োজন -E

আমি সত্যিই এই চ্যালেঞ্জটি উপভোগ করেছি, আমি মনে করি আমি এই উত্তরটি চেষ্টা করে আরও উন্নত করতে চাই তবে আমি মনে করি এটি এখনই করা সম্ভব সবচেয়ে কম হতে পারে। আমি এই উত্তরগুলি কয়েকদিন ধরেই বা বন্ধ রেখে খেলছি, তবে অনুভব করছি যে আমি 54 বাইট সমাধান দিয়ে খুশি!

s//A_=Y[;A_=A_%O?A_W''/;y/#A-_/#-A/;s/[#-}]+/uc/ee;say

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

ব্যাখ্যা

ডিফল্টরূপে, পার্লের বেশিরভাগ স্ট্রিং ফাংশন কাজ করে $_ যা শুরু করার জন্য খালি।

প্রথমে s//A_=Y[;A_=A_%O?A_W''/খালি স্ট্রিংটি এর $_সাথে প্রতিস্থাপন করে A_=Y[;A_=A_%O?A_W'', তারপরে y/#A-_/#-A/নিম্নলিখিত তালিকার উপর ভিত্তি করে অক্ষরগুলি প্রতিস্থাপন করুন (উপরের চরটি নীচে চর হয়ে ওঠে):

#ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
#$%&'()*+,-./0123456789:;<=>?@A

যা আপডেট $_করে $_=<>;$_=$_%2?$_:''। পরবর্তী s/[#-}]+/uc/eeসমস্ত অক্ষর এর [#-}]+সাথে প্রতিস্থাপন করেuc । ছাড়া /eeএই মাত্র স্ট্রিং হতে হবে uc, কিন্তু /eeদুইবার স্ট্রিং এর বিষয়বস্তু মূল্যায়ন করে। প্রথম মূল্যায়নের ফলাফলটি প্রত্যাবর্তন করে uc, যা একটি বড় আকারের সংস্করণ $_তবে যেহেতু $_কোনও বর্ণানুক্রমিক অক্ষর নেই, এটি কেবল পুরো স্ট্রিংটি ফিরিয়ে দেয়, দ্বিতীয়টি /eআবার স্ট্রিংকে মূল্যায়ন করে, যা $_উভয় $_(ইনপুট নম্বর) এ সেট করে বা'' নির্ভর করে বা না সংখ্যাটি বিজোড় বা সমান নয়।

শেষ অবধি, যেহেতু $_এখন আমরা যা চাই তা ধারণ করে, আমরা কল করি say(যার -Eপরিবর্তে প্রয়োজনীয়টি প্রয়োজন -e) যা $_একটি নতুন লাইন অনুসরণ করে প্রিন্ট করে।


বিকল্প পার্ল, 93 বাইট

৯২ বাইটের কোড +1 -p, যা আমি মনে করি এটি অ-প্রতিযোগিতামূলক করে তুলবে।

s//_/g;s//uc/e;y/\x09-\x0b/_/;s/____/}[/;s/___/%C]/;s/_/{''H/;y/'{}1CDGH/'-)1-3+--/;s/[#-}]+/uc/ee

একটি ট্যাব এবং একটি উল্লম্ব ট্যাব রয়েছে y///, যেমন নির্দেশিত \x09এবং \x0b

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


2

লোগো , 390 46 52 50 বাইট

[ask    1   se[make]iseq    1-3 cos ?/ask   1[1/sum 1   179]?]

এটি এমন একটি টেম্পলেট-তালিকা যা ইনপুটটি বিজোড় হলে ইনপুটটি ফিরিয়ে দেয় এবং ইনপুটটি সমান হলে ত্রুটি ঘটায়।

ব্যবহার:

show invoke [ask ... (paste code here) ... ] 5

আউটপুট

5

5 যেহেতু বিজোড়, এবং

invoke [ask ... (paste code here) ... ] 6

6 টি সমান হওয়ার কারণে একটি ত্রুটি ঘটবে।



2

টিআই-বেসিক, 14 বাইট

Input Q
sinֿ¹(gcd(Q²,int(e
Q

এটি একটি সমান সংখ্যায় একটি ডোমেন ত্রুটি (হোমস্ক্রিনে কিছুই মুদ্রণ) ছুড়ে দেয়।

Input Q             Q is a variable with an odd code. We cannot use "Ans" as it's even.

            int(e   floor(e) = 2; "2" is even.
         Q²         Q may be negative, so we square it which preserves parity.
     gcd(Q²,int(e   1 if Q is odd; 2 if Q is even.
sinֿ¹(gcd(Q²,int(e   Error iff Q is even.

Q                   If there was no error, print Q.

1

পাইথ , 14 11 10 9 বাইট

I + Q_ + K / Q + 3_1KQ 
I! SIcQ + 3_1Q
 I! U + 1_GQ1Q
? U + 1_GQ1k

টেস্ট স্যুট


এটি একটি চতুর উপায়, কিন্তু এর মতো I%Qy1Qকিছু কাজ করা উচিত নয় ?
জাকুব

@ জাকুব আমি স্পষ্টভাবে বুঝতে পারি নি y1... তবে %দুঃখের সাথে এটি অনুমোদিত নয়।
ফাঁস নুন

কেন না? %এর ascii মান আছে 37 এবং বিজোড়।
জাকুব

3
@ জাকুব কারণ আপাতদৃষ্টিতে আমি এই তালিকায় ওপি প্রদত্ত (যেটি ভুল) বিশ্বাস করেছি
লিকি নুন

1

Japt , 4 বাইট

u)çU

জাপট ব্যবহার করে আইএসও / 8859-1 , সুতরাং এটি (দশমিক ক্ষেত্রে) এর সাথে মিলে যায় 117 41 231 85

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

Uu)çU   Implicit: U = input integer
Uu)     Return Python-style U % (missing argument = 2). This gives 1 if U is odd, 0 if even.
   çU   Implicitly convert U to a string and repeat it that many times.
        Implicit: output result of last expression

আমি প্রথমে সমাধানগুলি ব্যবহার করে চেষ্টা করেছি p, যা মূলত çবিপরীত যুক্তির সাথে। যাইহোক, pএর বাম আর্গুমেন্টটি যদি একটি সংখ্যা হয় তবে এটি এক্সপোশেনটিশন সম্পাদন করে, তাই আমাদের স্পষ্টভাবে এটি একটি স্ট্রিংয়ে রূপান্তর করতে হবে। এই দ্রবণটি কোনও বিজোড় বাইট না থাকা ছাড়াও আসলে একটি বাইট সংক্ষিপ্ত হতে পারে।


1

ডিসি , 21 বাইট

[c]sa?kKKCI-1;1k%1!=a

ডেসিমাল: 91 99 93 115 97 63 107 75 75 67 73 45 49 59 49 107 37 49 33 61 97

অনুযায়ী এই আই ডিফল্ট, এই প্রোগ্রামটি প্রধান স্ট্যাক ইনপুট ছেড়ে যদি এটা বিজোড় হয় এবং প্যাকিং স্ট্যাক অন্যথায়। fটিআইও পৃষ্ঠার ক্ষেত্রে যেমন প্রোগ্রামের শেষের দিকে ডিবাগ কমান্ড যুক্ত করে এটি নিশ্চিত করা যায় ।

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

ব্যাখ্যা

[    # Begin macro definition.
 c   # Clear the main stack.
]sa  # End macro definition and push the macro into register "a".
?k   # Prompt for input and store it into precision parameter "k".
KK   # Push two copies of the input to the main stack.
CI-  # Push C-I = 12-10 = 2 to the main stack  
1;1  # Push the value stored in the first index of array "1" (0 by default) 
     # to the main stack. 
k    # Push 0 into parameter "k" to reset the precision (otherwise the modulus 
     # function will not work correctly).
%    # Push the input (mod 2) to the main stack.
1!=a # If the input (mod 2) does not equal 1, execute the macro in register "a".
f    # OPTIONAL: Output the contents of the main stack.

1

টিআই-বেসিক, 18 বাইট

Lirtosiast ধন্যবাদ 2 বাইট সংরক্ষণ করা

:Prompt Q
:While 5Q/ᴇ1-int(5Q/ᴇ1
:Q

বাইটে (+২ নিউলাইনস = 3 এফ)

:Prompt Q
 DD     51
:While 5Q/ᴇ1-int(5Q/ᴇ1
 D1    35 3B B1  35 3B  
        51 31     51 31
         83 71     83
:Q
 51

Http://tibasicdev.wikidot.com/one-byte-tokens দেখুন


1
কেন fPart (?
lirtosiast

তিবাসিকদেব.উইকিডট.কম- বোন- টোকেনস অনুসারে @ লিরিটোসিয়াসট একটি সমান বাইট (বিএ = 186) বলে মনে হচ্ছে
ওকি

ওহ, আমি ভুল লিখলাম কোন প্রবেশাগুলি সারি এবং কোনটি কলাম are
lirtosiast

1
আমি পেয়েছি Input Q[newline]sinֿ¹(gcd(Q²,int(e[newline]Q(14 বাইট) আমি কি আলাদা উত্তর হিসাবে পোস্ট করতে পারি?
lirtosiast

নিবন্ধন করুন পৃথক উত্তরের জন্য এটি অবশ্যই আলাদা। এটি পছন্দ
ওকি


0

বাশ , 31 বাইট

read a
[ $[a%2] = 0 ] ||echo $a

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

ব্যাখ্যা:

read a                   reading the input and define it on the variable a
[ $[a%2] = 0 ]      outputs exit status 0 when a/2 is 0 and exit status 1 if not.
||                           evaluates only when the exit status left of it is 1
echo $a                displays the variable a

আপনি মনে করেছেন যে এটি একটি সীমাবদ্ধ উত্স চ্যালেঞ্জ - আপনি নিষিদ্ধ বাইট ব্যবহার করছেন। ( rd $20|hএবং নিউলাইন।)
janrjan জোহানসেন

@ JanrjanJohansen স্থির আমার ধারণা
এডিডিবি

2
উম নং। প্রোগ্রামটির দৈর্ঘ্যের উপর কোনও বাধা নেই, তবে এর প্রতিটি চরিত্রের অবশ্যই একটি বিজোড় বাইট মান থাকতে হবে।
janrjan জোহানসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.