ড্রাগন কার্ভ ক্রম


23

ড্রাগন বক্ররেখা ক্রম (অথবা নিয়মিত কাগজ ভাঁজ ক্রম) একটি বাইনারি ক্রম। a(n)সর্বনিম্ন উল্লেখযোগ্য 1 এর বিট বাম অবহেলা দ্বারা দেওয়া হয় n। উদাহরণস্বরূপ a(2136)আমরা প্রথমে বাইনারি রূপান্তর করি:

100001011000

আমরা আমাদের সর্বনিম্ন তাৎপর্যপূর্ণ কিছু খুঁজে পাই

100001011000
        ^

কিছুটা বাম দিকে নিয়ে যান

100001011000
       ^

এবং এটি প্রত্যাখ্যান ফিরিয়ে দিন

0

কার্য

ইনপুট, আউটপুট হিসাবে একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে a(n)। (আপনি পূর্ণসংখ্যা বা বুলিয়ান দ্বারা আউটপুট দিতে পারেন)। বাইট দ্বারা পরিমাপ করা আপনার কোডটি যতটা সম্ভব ছোট করা লক্ষ্য করা উচিত।

পরীক্ষার মামলা

ক্রমে প্রথম 100 টি এন্ট্রি রয়েছে

1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 1


9
এর সর্বনিম্ন উল্লেখযোগ্য বিট 100001011000হ'ল ক 0। আপনি কি কমপক্ষে তাৎপর্যপূর্ণ বলতে চান 1?
ছড়িয়ে ছিটিয়ে

উত্তর:


16

গণিত 25 বাইট

1/2+JacobiSymbol[-1,#]/2&

এটি করার অন্যান্য উপায়:

56 বাইট

(v:=1-IntegerDigits[#,2,i][[1]];For[i=1,v>0,i++];i++;v)&

58 বাইট

1-Nest[Join[#,{0},Reverse[1-#]]&,{0},Floor@Log[2,#]][[#]]&

3
কি দারুন! একটি গণিতের উত্তর এবং এটি কেবল অন্তর্নির্মিত নয়। একটি upvote আছে!
কীউইউএসআর

2
এই উত্তরটি আরও উন্নত করতে পারে এমন একমাত্র কারণ এটি কীভাবে এবং কীভাবে কাজ করে তার একটি ব্যাখ্যা। : পি
মার্টিন ইন্ডার

2
@MartinEnder arxiv.org/pdf/1408.5770.pdf মন্তব্য দেখুন পর উদাহরণ 13.
alephalpha

7

পাইথন 3 , 22 21 বাইট

ETH প্রোডাকশনগুলিতে 1 বাইট ধন্যবাদ।

lambda n:n&2*(n&-n)<1

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

বিটওয়্যার গাণিতিক ftw।


2
"আপনি পূর্ণসংখ্যা বা বুলিয়ান দ্বারা আউটপুট দিতে পারেন" সুতরাং আমি অনুমান করি যে আপনার প্রয়োজন নেই 0+(...)?
মার্টিন ইন্ডার

এখানে অপারেশন ক্রম আমাকে সত্যিই বিভ্রান্ত করছে। n&1বন্ধনীতে রাখা যেতে পারে? বা এটি 1+(n^~-n)<1বন্ধনীতে রাখা যেতে পারে? বা এটি 1+(n^~-n)...
ETH প্রোডাকশনগুলি

ওহ godশ্বর কি। এই আমি যা খুঁজছিলাম ছিল: ও সুন্দর!
হাইপারনিউটারিনো

&সর্বনিম্ন নজরে রয়েছে, তাই এটি1+(n^~-n)
লিকি নুন

আহ, অগ্রাধিকার সারণী খুঁজে পেয়েছি। এখন এটি সমস্ত
অর্থবোধ করে

6

রেটিনা ,38 34 29 বাইট

\d+
$*
+`^(1+)\1$|1111
$1
^1$

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

মার্টিন এবং লিকি মূলত এই ধারণাটি নিয়ে এসেছিল, আরও 5 বাইট ছাড়ার জন্য!

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


31 বাইট (আমার এটি কি পোস্ট করা উচিত?)
লিকি নুন

আমি সম্পূর্ণ বাইনারি রূপান্তর এড়ানোর জন্য একটি উপায় খুঁজে পেয়েছি এবং পরিবর্তে কেবল 2 এর কারণগুলি বিভক্ত করে 1 ( মডেল
মার্টিন

@ মার্টিনএন্ডার মূলত আমার অ্যালগরিদম ... ২ বাইট ছাড়িয়ে
লিকি নুন

@ লেকিউন ওহ হ্যাঁ, তারা উভয়ই একই ধারণা। দুর্দান্ত মন এবং স্টাফ ...;)
মার্টিন ইন্ডার

আমি এটিকে সম্পাদনা করব, তবে আপনারা যদি কেউ এটি পোস্ট করতে চান তবে আমি অবশ্যই তা ফিরিয়ে নেব;)
সম্ভবতঃ


4

এলিস , 8 বাইট

I2z1xnO@

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

কোনও ইউনিকোড চরিত্রের কোড পয়েন্ট হিসাবে ইনপুট নেয় এবং ফলাফলটি 0x00 বা 0x01 বাইট হিসাবে অনুসারে ফলাফল দেয়।

পরীক্ষার জন্য, এখানে 12 বাইটের দশমিক I / O সংস্করণ যা সঠিক একই অ্যালগরিদম ব্যবহার করে (কেবলমাত্র I / O আলাদা):

/o
\i@/2z1xn

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

যদি অ্যালিস একটি গল্ফিং ভাষা ছিল এবং স্পষ্টত I / O এবং প্রোগ্রাম সমাপ্তির প্রয়োজন না হয়, এটি কেবলমাত্র 5 বাইট ( 2z1xn) দ্বারা 05AB1E এবং জেলি উভয়কেই পরাস্ত করবে।

ব্যাখ্যা

I    Read input.
2z   Drop all factors of 2 from the input, i.e. divide it by 2 as long
     as its even. This shifts the binary representation to the right
     until there are no more trailing zeros.
1x   Extract the second-least significant bit.
n    Negate it.
O    Output it.
@    Terminate the program.


3

বুদ্ধিমান , 28 20 16 বাইট

::-~^~-&:[?>]~-^

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

ব্যাখ্যা

এটি লিকি নুনের পাইথন উত্তরের একটি বন্দর। দুর্ভাগ্যক্রমে এটি টিআইও-তে কাজ করে না কারণ টিআইওর দোভাষীর সংস্করণটি কিছুটা পুরানো।

আমরা আমাদের ইনপুটটির 3 টি ::অনুলিপিটি দিয়ে তৈরি করে শুরু করি, তারপরে আমরা প্রথম কপিটি 1 টি দ্বারা হ্রাস করব This এটি প্রথম বিট পর্যন্ত সমস্ত বিটগুলি সরিয়ে ফেলবে We আমরা তারপরে আমাদের ইনপুটটির অন্য অনুলিপিটির সাথে এটি জোর করে দেব। যেহেতু আমাদের ইনপুটটিতে প্রথম 1 অবধি সমস্ত বিট আপ ফ্লিপ করা হয়েছে ফলে ফলস্বরূপ সেই সমস্ত বিট 1 হবে। তারপরে যদি আমরা ফলাফলটিতে একটি যুক্ত করি তবে ~-আমরা আমাদের সর্বনিম্ন তাৎপর্যপূর্ণ বামের জায়গায় 1 টি একটি পেয়ে যাব We আমরা এবং ইনপুট থেকে বিটটি পেতে এই ইনপুটটি দিয়ে। এখন আমাদের যদি 0if বিটটি বন্ধ ছিল এবং 2 বিট পাওয়ার বিট চালু ছিল তবে আমরা এটিকে একক 1বা এর 0সাথে পরিবর্তন করতে পারি :[?>]। এটি হয়ে গেলে আমাদের কেবল কিছুটা উপেক্ষা করা দরকার ~-^এবং আমরা শেষ হয়ে গেল।



3

হাস্কেল , 45 43 39 বাইট

নিমিকে ধন্যবাদ 6 বাইট সংরক্ষণ করা হয়েছে

f x|d<-div x 2=[f d,mod(1+d)2]!!mod x 2

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


আপনি divপরিবর্তে ব্যবহার করতে পারেন quot
নিমি

আরও ভাল করে: divMod:f x|(d,m)<-divMod x 2=[mod(1+d)2,f d]!!m
nimi

@ নিমিমি কীভাবে এটি কাজ করে তা আমি বুঝতে পারি না। আপনার সম্ভবত এটি নিজেই পোস্ট করা উচিত।
গম উইজার্ড

এটা এখনও একই এলগরিদম, কিন্তু অন্যভাবে শাখা বাছাই করার (যাও recursively বেস কেস বনাম আবার চ বলি), তাই এটা সম্পাদন করা বিনা দ্বিধায়। |(d,m)<-divMod x 2একটি হল প্যাটার্ন পাহারা বাধতে dকরতে div x 2এবং mকরতে mod x 2। আমরা mদুটি উপাদান তালিকা সূচক করতে ব্যবহার করি [...,...]!!m। যদি এর m==0আমরা ফিরে mod(1+d)2এবং ক্ষেত্রে m==1 f d
নিমি

1
ওহ, দুঃখিত, আপনি তালিকা উপাদান টুসকি করতে হবে: [f d,mod(1+d)2]এটি অনলাইন চেষ্টা করুন!
নিমি

3

x86 মেশিন কোড, 17 16 15 বাইট:

একটি এবিআই ধরে নেয় যেখানে স্ট্যাকের উপর প্যারামিটারগুলি ঠেলাঠেলি করা হয় এবং ALনিবন্ধে ফেরতের মান থাকে ।

8B 44 24 04 0F BC C8 41 0F BB C8 0F 93 C0 C3

এটি নিম্নলিখিত হিসাবে পৃথক করা হয়েছে:

_dragoncurve:
  00000000: 8B 44 24 04        mov         eax,dword ptr [esp+4]
  00000004: 0F BC C8           bsf         ecx,eax
  00000007: 41                 inc         ecx
  00000008: 0F BB C8           btc         eax,ecx
  0000000B: 0F 93 C0           setae       al
  0000000E: C3                 ret

1
@ পিটারটেলর আমি আমার উত্তরের জন্য বাইটে সিপিইউ নির্দেশনার আকারটি গণনা করছি; এটি সমাবেশের উত্তরের জন্য পিপিসিজিতে একটি দুর্দান্ত সাধারণ অনুশীলন।
গোবিন্দ পরমার

1
কখনো বলতে পারতাম না কিভাবে এটা সাধারণ, কিন্তু এটা স্পষ্টভাবে হয় ভুল
পিটার টেলর

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

3
এটি অপ্রাসঙ্গিক, @ পিটার। সমাবেশ কোডটি কেবল মেশিন কোডের একটি মানব-পঠনযোগ্য অনুবাদ। এগুলি হুবহু একই ভাষা, কেবল দুটি ভিন্ন রূপ / উপস্থাপনায়। এটি টিআই বেসিকের চেয়ে আলাদা নয়, যেখানে এটি সাধারণত গৃহীত হয় যে আমরা টোকেন গণনা করি অক্ষর বাইটের পরিবর্তে কারণ সিস্টেমটি তাদের অভ্যন্তরীণভাবে এইভাবে সঞ্চয় করে। অ্যাসেম্বলি ভাষার ক্ষেত্রেও এটি একই হতে পারে: নির্দেশিকা স্ত্রীরোগগুলি পৃথক অক্ষর হিসাবে সংরক্ষণ করা হয় না, বরং সমতুল্য মেশিন কোডের বাইট হিসাবে উপস্থাপিত হয়।
কোডি গ্রে

2
এছাড়া কার্যকরীভাবে ভাষী, কেন কেউ হবে কি কখনো সমাবেশ ভাষা স্মৃতিবর্ধনবিদ্যা একটি কোড-গলফ প্রতিযোগিতায় সম্প্রসারিত প্রবেশ করবে সেখানে যখন তারা বিশ্বাসীদেরকে 100% সমতুল্য মেশিন কোড, যেখানে এন্ট্রি বিনামূল্যে জন্য ছোট হতে নিশ্চিত করা হয় অনুবাদ পারে? এটি সম্পূর্ণই অযৌক্তিক না হলে দু'জনেই অর্থহীন alone
কোডি গ্রে

3

জাভাস্ক্রিপ্ট (ES6), 17 14 বাইট

f=
n=>!(n&-n&n/2)
<input type=number min=0 oninput=o.textContent=f(this.value)><pre id=o>

সম্পাদনা: @ ডেনিসের উত্তর পোর্ট করে 3 বাইট সংরক্ষণ করা হয়েছে একবার আমি লক্ষ্য করেছি যে বুলিয়ান আউটপুট গ্রহণযোগ্য।


3

এটি আসলে "কাজ" করে না; আপনি একটি নির্দিষ্ট আর্কিটেকচারকে লক্ষ্য করে সংকলকটির একটি নির্দিষ্ট সংস্করণের জন্য কোড জেনারেটরের এক গলির উপর নির্ভর করছেন, যেখানে মধ্যবর্তী গণনা একই রেজিস্টারে করা হয় যা প্রত্যাবর্তনের মানগুলির জন্য ব্যবহৃত হয়। যেকোন ধরণের অপ্টিমাইজেশন সক্ষম করা, লক্ষ্য আর্কিটেকচার পরিবর্তন করা, বা জিসিসির একটি ভিন্ন সংস্করণ ব্যবহার করা এটিকে ভেঙে দেবে। আপনি পাশাপাশি কেবল এটিই বলতে পারেন "13 ই অক্টোবর যখন পূর্ণিমা থাকবে তখন আমার স্ট্যাকের আবর্জনায় সঠিক আউটপুট রয়েছে"।
কোডি গ্রে

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

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

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

কি দারুন. বাদাম আমি বোঝাতে চাইছি আপনি যদি বলছিলেন যে বাস্তবায়ন-সংজ্ঞায়িত আচরণের অনুমতি দেওয়া হয়েছে তবে বাস্তবায়ন দ্বারা সংজ্ঞায়িত আচরণ নয় । এটি আক্ষরিক অর্থেই সংজ্ঞায়িত। বাস্তবায়নের জন্য প্রতিটি সময় এলোমেলো জিনিস করার অনুমতি দেওয়া হয়। এবং "স্ট্যান্ডার্ড সংকলন পতাকা" এর এই ধারণাটি এমন কিছু যা আপনি সবেমাত্র আবিষ্কার করেছেন। আমার স্ট্যান্ডার্ড সংকলনের পতাকাগুলিতে এমন কয়েকটি অন্তর্ভুক্ত রয়েছে যা আপনার কোডকে ভঙ্গ করে। এবং আমি খুব কমই অপ্টিমাইজারটি মানহীন বলে মনে করি। ঠিক আছে, স্পষ্টতই এই সাইটটি আমার পক্ষে নয়।
কোডি গ্রে

3

ইন্টারকল , 50 বাইট

DOWRITEIN.1DO.1<-!?1~.1'~#1DOREADOUT.1PLEASEGIVEUP

ইন্টারকলগুলি অ্যানারি অপারেটরগণ এটির জন্য বেশ উপযুক্ত, তাই আমি আমার প্রথম পোস্টটি লেখার সিদ্ধান্ত নিয়েছি।

DO WRITE IN .1
DO .1 <- !?1~.1'~#1
DO READ OUT .1
PLEASE GIVE UP

3

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

g~(a:b:c)=1:a:0:b:g c
d=g d
(d!!)

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

0-ইনডেক্সিং ব্যবহার করে।


1
কী ~এই প্রেক্ষাপটে কি? আমি পেয়েছি এটি একটি অলস ম্যাচ, তবে আপনার অলস ম্যাচের দরকার কেন?
গম উইজার্ড

2

জেলি , 7 6 বাইট

1 বাইট আউটগলফার এরিককে ধন্যবাদ।

Bt0ṖṪṆ

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

দীর্ঘ প্রোগ্রাম


হুম ... ঠিক আছে, আপনি কেবল এর ṖṪṆপরিবর্তে (আমার মুছে ফেলা উত্তর হিসাবে) করতে পারেন ṫ-ḄỊ
এরিক আউটগল্ফার

1
আপনার 7 বাইট তালিকার জন্য আর একটি:BUḌDḊḢ¬
স্টেইনবার্গ

2

,,, , 10 9 বাইট

::0-&2*&¬

ব্যাখ্যা

উদাহরণস্বরূপ 3 হিসাবে ইনপুট নিন।

::0-&2*&1≥
               implicitly push command line argument       [3]
::             duplicate twice                             [3, 3, 3]
  0            push 0 on to the stack                      [3, 3, 3, 0]
   -           pop 0 and 3 and push 0 - 3                  [3, 3, -3]
    &          pop -3 and 3 and push -3 & 3 (bitwise AND)  [3, 1]
     2         push 2 on to the stack                      [3, 1, 2]
      *        pop 2 and 1 and push 2 * 1                  [3, 2]
       &       pop 2 and 3 and push 2 & 3                  [2]
        ¬      pop 2 and push ¬ 2 (logical NOT)            [0]
               implicit output                             []


2

অক্টাভা , 34 বাইট

@(x)~(k=[de2bi(x),0])(find(k,1)+1)

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

ব্যাখ্যা:

@(x)                               % Anonymous function taking a decimal number as input
    ~....                          % Negate whatever comes next
     (   de2bi(x)   )              % Convert x to a binary array that's conveniently 
                                   % ordered with the least significant bits first
        [de2bi(x),0]               % Append a zero to the end, to avoid out of bound index
     (k=[de2bi(x),0])              % Store the vector as a variable 'k'
                     (find(k,1)    % Find the first '1' in k (the least significant 1-bit)
                               +1  % Add 1 to the index to get the next bit
     (k=[de2bi(x),0])(find(k,1)+1) % Use as index to the vector k to get the correct bit

কীভাবে আসি আমি কখনই ডি 2 বি এর কথা শুনিনি ...: ও
সানচিইস

1

জমা:

পাইথন 2 , 41 39 বাইট

x=input()
while~-x&1:x/=2
print 1-x/2%2

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

-২ বাইটস ফ্রাইআমডেএজিগম্যানকে ধন্যবাদ

প্রাথমিক সমাধান:

পাইথন 2 , 43 বাইট

lambda x:1-int(bin(x)[bin(x).rfind('1')-1])

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


তাহলে কোনটি আপনার জমা?
লিকি নুন

@ লেকিয়ুন প্রথমটি কারণ এটি খাটো; দ্বিতীয়টি ছিল আমার আসল জমা। আমি কি তাদের পৃথক পোস্ট করা উচিত?
হাইপারনিউটারিনো

~-x&1পরিবর্তে কিছু সময়ের জন্য কাজ করে, আমি মনে করি।
FryAmTheEggman

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

@ স্টিভি গ্রিফিন হ্যাঁ, ধন্যবাদ দুর্ভাগ্যক্রমে আমি ব্যবহারকারীকে পিং করতে পারি না কারণ সম্পাদনাটি প্রত্যাখ্যান করা হয়েছিল।
হাইপারনিউটারিনো

1

এমএটিএল , 11 10 বাইট

t4*YF1)Z.~

এটি অনলাইন চেষ্টা করুন! অথবা প্রথম 100 আউটপুট দেখুন

ব্যাখ্যা

t    % Implicit input. Duplicate
4*   % Multiply by 4. This ensures that the input is a multiple of 2, and
     % takes into account that bit positions are 1 based
YF   % Exponents of prime factorization
1)   % Get first exponent, which is that of factor 2
Z.   % Get bit of input at that (1-based) position
~    % Negate. Implicit display


1

বেফুঞ্জ -98 , 19 বাইট

&#;:2%\2/\#;_;@.!%2

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

&#                       Initial input: Read a number an skip the next command
  ;:2%\2/\#;_;           Main loop: (Direction: East)
   :2%                    Duplicate the current number and read the last bit
      \2/                 Swap the first two items on stack (last bit and number)
                          and divide the number by two => remove last bit
         \                swap last bit and number again
          #;_;            If the last bit is 0, keep going East and jump to the beginning of the loop
                          If the last bit is 1, turn West and jump to the beginning of the loop, but in a different direction.
&#;           @.!%2      End: (Direction: West)
&#                        Jump over the input, wrap around
                 %2       Take the number mod 2 => read the last bit
               .!         Negate the bit and print as a number
              @          Terminate

1

এসসিএএলএ, 99 (78?) অক্ষর, 99 (78?) বাইট

if(i==0)print(1)else
print(if(('0'+i.toBinaryString).reverse.dropWhile(x=>x=='0')(1)=='1')0 else 1)

iইনপুট কোথায়

আপনি দেখতে পাচ্ছেন, আমি যদি শূন্যের যত্ন না নিই তবে আমি 21 বাইট সংরক্ষণ করি (যেমন লেখক তার পরীক্ষার ক্ষেত্রে করেছিলেন):

print(if(('0'+i.toBinaryString).reverse.dropWhile(x=>x=='0')(1)=='1')0 else 1)

এটি আমার প্রথম কোডগল্ফ তাই আমি আশা করি ভাল করলাম :)

এটি অনলাইন চেষ্টা করুন! যদিও এটি লোল গণনা করতে বেশ দীর্ঘ।


সাইটে স্বাগতম!
ডিজেএমসিএমহেম


1

জাভা 8, 17 বাইট

n->(n&2*(n&-n))<1

LeakyNun এর পাইথন 3 উত্তর সোজা বন্দর । সংক্ষিপ্ত সমাধান দেখার জন্য আমি বিটওয়াইজ অপারেশন এবং অপারেটর প্রাধান্যের সাথে যথেষ্ট পরিচিত নই; অতিরিক্ত প্যারেন্থেসিস এড়ানোর কোনও উপায় থাকতে পারে?


0

জাপট , 10 8 9 বাইট

!+¢g¢a1 É

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

ব্যাখ্যা

!+¢   g    a1 É
!+Us2 gUs2 a1 -1 # Implicit input (U) as number
!+               # Return the boolean NOT of
      g          #   the character at index
       Us2       #     the input converted to binary
           a1    #     the index of its last 1
              -1 #     minus 1
      g          #   in string
  Us2            #     the input converted to binary

এটি প্রতিটি falseকিছুর জন্য ফিরে আসে কারণ অক্ষর (0 বা 1) সর্বদা একটি স্ট্রিং।
শেগি

ওফস, লক্ষ্য করা উচিত ছিল ... এখনই স্থির
লুক

মনে হচ্ছে এটি আপাতত ব্যর্থ1
শেগি

0

জাভাস্ক্রিপ্ট (ES6), 53 34 বাইট

a=>eval("for(;~a&1;a/=2);~a>>1&1")

42 বাইট:a=>!+(a=a.toString(2))[a.lastIndexOf(1)-1]
শেগি

আমি ইতিমধ্যে একটি সংক্ষিপ্ত (গাণিতিক) সমাধান পেয়েছি ...
লুক

ভাল লাগল :) মনে হয় আমি যদি 42 বাইট এক পোস্ট করি?
শেগি

@ শেগি, একেবারেই নয়
লূক

0

পিএইচপি> = 7.1, 32 বাইট

<?=1^!trim(decbin($argn),0)[-2];

পিএইচপি স্যান্ডবক্স অনলাইন

পিএইচপি , 40 বাইট

for($i=$argn;$i%2<1;)$i/=2;echo$i/2%2^1;

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

পিএইচপি , 41 বাইট

<?=1^preg_match("#110*$#",decbin($argn));

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



0

চিপ , 93 বাইট

HZABCDEFG,t
 ))))))))^~S
H\\\\\\\/v~a
G\\\\\\/v'
F\\\\\/v'
E\\\\/v'
D\\\/v'
C\\/v'
B\/v'
A/-'

সামান্য এডিয়ান বাইট হিসাবে ইনপুট নেয়। (টিআইওর কাছে কিছুটা অজগর রয়েছে যা এটি আপনার জন্য করে) পারেন হিসাবে আউটপুট দেয় 0x0বা 0x1। (টিআইও মানটি পরীক্ষা করতে এক্সএক্সডি ব্যবহার করে)।

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

এটা কিভাবে?

চিপ একবারে ইনপুট দেখায়, তাই মাল্টিবাইট ইনপুট পরিচালনা করা কিছু পরিমাণে যুক্ত করে, তবে আমার যতটুকু ভয় হয়েছিল তার কাছাকাছি নয়।

আসুন এটিতে প্রবেশ করুন:

HZABCDEFG

এগুলি HZহ'ল, পূর্ববর্তী বাইটের উচ্চ বিট (যদি এটি ছিল) এবং A- G, বর্তমান বাইটের সাতটি নিম্ন বিট। এগুলি সংখ্যার সর্বনিম্ন সেট বিট সনাক্ত করতে ব্যবহৃত হয়।

        ,t
))))))))^~S

যখন সর্বনিম্ন সেট বিট পাওয়া যায়, তখন আমাদের কয়েকটি কাজ করতে হয়। এই প্রথম অংশটি বলে "যদি আমাদের কাছে কিছুটা সেট থাকে (তবে )গুলি) থাকে তবে Sআউটপুটটি বড় করা বন্ধ করুন এবং tউত্তরটি মুদ্রণের পরে বাদ দিন।

H\\\\\\\/v~a
G\\\\\\/v'
...
A/-'

বর্তমান বাইটের যে কোনও বিট ( A- H) কেবল তার আগে জিরোগুলির একগুচ্ছ দ্বারা তৈরি হয় তার পরে একটি ( \এবং /: এগুলির সরাসরি উত্তর দিকে বিটগুলি দেখুন; আমরা বিশ্বাস করতে পারি যে পূর্ববর্তী সমস্ত বিটগুলি শূন্য ছিল) তারের মধ্য দিয়ে গেছে ডান ( v,, '...), তারপরে যেকোন মান এটি উল্টিয়ে আউটপুটের কম বিট হিসাবে দেওয়া হয় ( ~a)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.