বুদ্ধিমান সংখ্যা তৈরি করুন


18

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

  • : স্ট্যাকের শীর্ষটি নকল করুন

  • ? স্ট্যাকের শীর্ষে নীচে ঘোরান

  • ! স্ট্যাকের নীচে শীর্ষে ঘোরান

  • [ ] লুপ থাকা অবস্থায় স্ট্যাকের শীর্ষটি শূন্য নয়

  • ~স্ট্যাকের শীর্ষ নয় ( -(n+1))

  • -স্ট্যাকের উপরের অংশটিকে উপেক্ষা করুন ( -n)

  • >একবার ডানে স্ট্যাকের উপরে bitshift ( n//2)

  • <স্ট্যাকের শীর্ষে একবার বাম দিকে শিট করুন ( n*2)

  • ^স্ট্যাকের শীর্ষ দুটি আইটেমটি জোর করুন ( পাইথন হিসাবে একই )

  • |বা স্ট্যাকের শীর্ষ দুটি আইটেম ( পাইথন হিসাবে একই )

  • &এবং স্ট্যাকের শীর্ষ দুটি আইটেম ( পাইথন হিসাবে একই )


বিজ্ঞ একটি পূর্ণসংখ্যা মেকিং বেশ সহজ আপনি শূন্য দিয়ে করতে পারেন হয় ::^এবং সঙ্গে এটি বাড়ায় ~-তাই আপনি শূন্য করতে এবং এটা সময়ের একটি গুচ্ছ বাড়ায়। তবে আমরা যদি -জিনিসগুলি সরিয়ে ফেলি তবে এটি আরও আকর্ষণীয় হয়ে ওঠে।

আমরা এখনও বাকি ক্রিয়াকলাপগুলি ব্যবহার করে প্রতিটি সংখ্যা তৈরি করতে পারি। উদাহরণস্বরূপ এখানে 3

~<<~

Tio

এই কাজ কারণ ~পালাক্রমে শূন্য, অসীম স্ট্রিং 0বিট, নেতিবাচক এক, অসীম স্ট্রিং মধ্যে 1বিট, প্রতিটি <একটি appends 0শেষ, আমরা যখন কাজ হয়ে গেলে আমরা কি করতে বিট ~একটি স্ট্রিং মধ্যে যা প্রতিটি এটি সক্রিয় 0দুই দ্বারা অনুসরণ গুলি 1গুলি , বা বেশিরভাগ লোকেরা এটিকে 3 বলে।


কার্য

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

এই না তাই আপনি উৎপাদিত সোর্স কোড কমান লক্ষ্য হওয়া উচিত নয় অগত্যা আউটপুট।

উদাহরণ আউটপুট

এই তালিকাটি নিখরচায় নয় তবে এগুলি কেবল সম্ভব আউটপুট

1  -> ~<~
2  -> ~<~<
3  -> ~<<~
4  -> ~<~<<
5  -> ~<~:<<|
6  -> ~<<~<
7  -> ~<<<~
8  -> ~<~<<<
9  -> ~<~:<<<|
10 -> ~<~:<<|<
11 -> ~<<~:><<<|
12 -> ~<<~<<
13 -> ~<<~:<<<|>
14 -> ~<<<~<
15 -> ~<<<<~
16 -> ~<~<<<<

0-এ অন্তর্ভুক্ত রয়েছেpositive integers
কলসডব্ল

4
না, 0 ইতিবাচক পূর্ণসংখ্যার অন্তর্ভুক্ত নয়।
জাকারি

স্পষ্টতই :একটি খালি স্ট্যাকের উপর প্রয়োগ করা ধাক্কা দেয় a 0। আমি মনে করি এটি নির্দিষ্ট করা উচিত, কারণ খালি স্ট্যাক থেকে সদৃশ হওয়া উচিত তা স্পষ্ট নয়0
লুইস মেন্ডো

অন্যান্য অক্ষরগুলি সিনট্যাক্স ত্রুটি, বা এড়ানো হয়?
xnor

@ লুইসেমেন্ডো আপনি স্ট্যাকের বিষয়বস্তুগুলি ছাড়াও জানেন না যদি স্ট্যাকটি শূন্য হয়
গম উইজার্ড

উত্তর:


8

জাপট , 10 বাইট

¤d0'<1"~<~

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

বেসিক ধারণা: সংখ্যাটির বাইনারি উপস্থাপনা নিন এবং মানচিত্রে 0যান <এবং 1করুন ~<~। 1-10 এর জন্য আউটপুট:

 1: ~<~
 2: ~<~<
 3: ~<~~<~
 4: ~<~<<
 5: ~<~<~<~
 6: ~<~~<~<
 7: ~<~~<~~<~
 8: ~<~<<<
 9: ~<~<<~<~
10: ~<~<~<~<

এটি মেটাগল্ফিংও সহজ হবে। স্রেফ জোড়া স্ট্রিপ করুন~~
ড্রাকো 18

7

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

f=n=>n?f(n&1?~n:n/2)+'<~'[n&1]:''
<input type=number oninput=o.textContent=f(this.value)><pre id=o>

যে কোনও 32-বিট পূর্ণসংখ্যার জন্য কাজ করে।


ঠিক আছে আমি এটি বুঝতে পেরেছি। শান্ত! সুন্দর কাজ.
গম উইজার্ড

7

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

আমার মনে হচ্ছে পিপিসিজি সত্যিই আমার হাস্কেলকে উন্নতি করছে। সাদা বিড়াল স্ট্রোক।

f n=mapM(["<","~<~"]<$f)[1..n]!!n>>=id

fনেয় Intএবং ফেরত দেয় a String

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

(আমি <$fউপায় দ্বারা এটি উল্লেখ করছি । এটি একটি চরিত্রের উপরে সংরক্ষণ করে \_->।)

ইন Functorজন্য উদাহরণস্বরূপ (->) a(টাইপ থেকে ফাংশন a), আমরা আছে: x <$ f = fmap (const x) f = const x . f = const x। একমাত্র সীমাবদ্ধতা হ'ল fএবং চূড়ান্তটিকে const xঅবশ্যই একই উত্সের ধরণটি ব্যবহার করা উচিত a। উদাহরণটি সম্পূর্ণ অলস তাই এটি কখনও মূল্যায়নও করে না f

বিকল্পভাবে, একই দৈর্ঘ্য কিন্তু কম খারাপ ( (l!!)একটি বেনাম ফাংশন):

(l!!)
l=(++)<$>"":tail l<*>["<","~<~"]

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

এগুলি উভয়ই @ETH প্রডাকশনগুলির জ্যাপ উত্তর হিসাবে একই উপস্থাপনা ব্যবহার করে, যদিও প্রথমটি প্রথমে কিছু অপ্রয়োজনীয় <শুরুর দিকে দিতে পারে ।

প্রথমটি ফলাফল এবং তালিকার সূচীগুলির পরে সমস্ত সংযুক্তি n "<"এবং "~<~"স্ট্রিংগুলি গণনা করে ।

দ্বিতীয় যাও recursively দিয়ে শুরু দ্বারা গঠিত অসীম তালিকা হিসাব ""এবং তারপর সংযোজন করে নতুন উপাদান নির্মাণের "<"এবং "~<~"ইতিমধ্যে তালিকার প্রতিটি উপাদান স্ট্রিং (আসলে সামান্য খাটো দেখতে দিন ছিল ""পেতে পরিণত "<"।)


1
কিভাবে পৃথিবীতে <$fকাজ করে? কিছু অদ্ভুত ফান্টারের উদাহরণ?
xnor

@xnor Mwahahaha আমি আমি তখন একটি ব্যাখ্যা যোগ করা উচিত অনুমান।
janrjan জোহানসেন

3

রুবি , 118 116 109 107 105 91 বাইট

সাইয়েসের জন্য 2 বাইট সংরক্ষণ করা হয়েছে!

->n{o={0=>""}
o.dup.map{|c,k|["~~c","<c*2"].map{|t|o[eval t[1..9]]=k+t[0]}}until o[n]
o[n]}

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

এটি এমন একটি ফাংশন যা পূর্ণসংখ্যাটিকে ইনপুট হিসাবে গ্রহণ করে এবং স্ট্রিংটি দেয় যা প্রজ্ঞানে সেই পূর্ণসংখ্যাকে উপস্থাপন করে। আপনি এখানে একটি অদম্য সংস্করণ খুঁজে পেতে পারেন যা এই প্রোগ্রামটি 1 থেকে সমস্ত পূর্ণসংখ্যার উপর পরীক্ষা করে।

প্রাথমিক ধারণাটি ধ্রুবকের একটি "পুল" রেকর্ড করা। তারপরে, প্রতিটি "পদক্ষেপ" সহ, প্রতিটি সম্ভাব্য ফাংশনের জন্য পুলটিতে ধ্রুবক যুক্ত করা হয়। আমি ফাংশন চয়ন করেছেন ~, <এবং >, যা আমি বিশ্বাস করি যে সংখ্যা প্রতিনিধিত্ব করার জন্য যথেষ্ট। (কমপক্ষে, প্রতিটি সংখ্যা 10,000 এর নিচে)


আপনি ব্যবহার করতে পারেন dupপরিবর্তে cloneiirc
Cyoce

আপনারও কি দরকার dup? mapএর রিসিভারটি পরিবর্তন করে না।
সাইয়েস

@ কিয়েস আমার মনে হয় এটি হয়েছে
কনর ও'ব্রায়েন

ওহ আমি এখন দেখতে। পুনরুক্তি করার সময় রুবি সংশোধন করতে পছন্দ করে না।
সাইয়েস

3

পাইথন 2, 54 52 51 বাইট।

lambda x:'<'.join('>~<~'*int(i)for i in bin(x)[2:])

2 বাইট সংরক্ষণের জন্য গম উইজার্ড এবং এক বাইটের জন্য আরজান জোহানসেনকে ধন্যবাদ! এটি ETHProditions এর জ্যাপ উত্তর হিসাবে একই ধারণা ব্যবহার করে, তবে বিভিন্ন প্রতিস্থাপন স্ট্রিং সহ (যেমন বাইনারি উপস্থাপনা ব্যবহার করে)


আপনার [ ]ভিতরে জেনারেটরের চারপাশের দরকার নেই joinjoinজেনারেটরটিকে তার তর্ক হিসাবে নিতে পারে।
গম উইজার্ড

আমি মনে করি '>~<~'*int(i)আপনি একটি বাইট বাঁচাতে পারে।
janর্জন জোহানসেন

আমি বিশ্বাস করি স্বয়ংক্রিয় স্কোরবোর্ড স্নিপেট এবং এর মতো সুবিধার্থে সর্বশেষতম স্কোরটি সর্বশেষ তালিকাভুক্ত হওয়ার কথা।
janrjan জোহানসেন

সেখানে দেরি হওয়ার জন্য দুঃখিত।
জাচারা

2

05AB1E 1 , 11 বাইট

bS'<…~<~‚èJ

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

ইটিএইচ প্রডাকশনগুলির জ্যাপ উত্তরের মতো।

@ আদনানকে 4 টি বাইট সংরক্ষণ করা হয়েছে!


আরে সুন্দর! আপনাকে আসলে সংখ্যাগুলি স্ট্রিংয়ে রূপান্তর করতে হবে না কারণ তারা 05AB1E তে 'টাইপ' সমান। সংখ্যার আক্ষরিক জন্য একই (আপনি ছাড়া এটি করতে পারেন ')। আপনি ইনডেক্সিংও ব্যবহার করতে পারেন যা আপনাকে 11 বাইট দেয় :)।
আদনান

@ আদনান আপনাকে অনেক ধন্যবাদ!
কমরেড স্পার্কলপনি

@ আদনান একটি দ্রুত প্রশ্ন, এখানে è কীভাবে কাজ করে?
কমরেড স্পার্কলপনি

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

1

পাইথন 2 , 123 110 বাইট

def w(x):a=map(int,bin(x)[2:]);return x%2*("~<~:<"+"<".join(":"*e for e in a[-2::-1])+"|"*sum(a))or w(x/2)+"<"

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

পাশাপাশি একটি lambda

w=lambda x:x%2*("~<~:<"+"<".join(":"*int(e)for e in bin(x)[-2:2:-1])+"|"*sum(map(int,bin(x)[2:])))or w(x/2)+"<"

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

সংক্ষিপ্ত হতে পারে তবে এখানে আমার সমাধান। এটি বাইনারি উপস্থাপনা নেয় এবং কোডে পরিণত করে।



0

জেলি, 11 10 বাইট

Bị“~<~“<”F

এটি ইটিএইচ প্রডাকশনগুলির জপ উত্তরের পোর্ট করা সংস্করণ। ইটিএইচ প্রডাকশনগুলির কথা বলতে গিয়ে, তারা আমাকে একটি বাইট সংরক্ষণ করেছিল!


আপনি কি স্ট্রিং অদলবদল করতে পারেন এবং সূচকে 0-ভিত্তিক বলে ভান করতে পারেন?
ETH প্রোডাকশনগুলি

আপনি কি বোঝাতে চেয়েছেন? আমি এই বিষয়টি উল্লেখ করছি যে আমাকে ব্যবহারযোগ্য সূচকগুলি পেতে সংখ্যার বাইনারি উপস্থাপনা বৃদ্ধি করতে হবে।
জাকারি


কাজ করে না, 1 উত্পাদিত হয় <, যা
জ্ঞানসম্পন্ন

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