উত্স কোডটি আনস্র্যাম্বল করুন [ক্র্যাকিংয়ের চেষ্টা করার জন্য ডাকাত থ্রেড]


44

এটি সোর্স কোড চ্যালেঞ্জটি মূল আনস্র্যাম্বল করার মূল সঙ্গী থ্রেড । আপনি যদি ভাবেন যে আপনি কোনও পুলিশ জবাব উত্তোলন করতে পেরেছেন, আপনার এই সমাধানটির উত্তর হিসাবে সমাধানটি পোস্ট করা উচিত।

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

সর্বাধিক পয়েন্ট সহ ডাকাত জয়লাভ করে (সফল ফাটল)।

লিডারবোর্ড

অনেকগুলি সলভ

20 দ্রাবক

15 দ্রাবক

10 দ্রাবক

7 দ্রাবক

5 দ্রাবক

4 দ্রাবক

3 দ্রাবক

2 দ্রাবক

1 সমাধান


1
পার্ল 5, আকার 27, মরোট দ্বারা - মুদ্রণ'পিন '= ~ ট্র (এ-জে) (জে-জেড) আর

@ WumpusQ.Wumbley আমরা সবাই সেখানে ছিলাম ...;)
মার্টিন এন্ডার

3
আমি এটাকে সন্তুষ্ট করার চেষ্টা করার সময় নষ্ট করতে অস্বীকার করি।

দুটি প্রশ্ন সংস্থা প্রদত্ত, এটি প্রদর্শিত হবে যে স্ক্র্যাম্বলড /
আনস্র্যাম্বলড

রুবি, 23 মেগাটম = পি% ++ এর পদ্ধতিগুলি [80] [1 ..- 1]
হিস্টোক্র্যাট

উত্তর:


32

মার্টিন বাটনার লিখেছেন সিজেএম, আকার 20

Hi "petStorm!", mame

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

কিভাবে এটা কাজ করে

Hi                      "           int(17)                     ";
   "petStorm!",         "                    len('petStorm!')   ";
                ma      "     atan2(       ,                 )  ";
                  me    " exp(                                ) ";
                        " exp(atan2(int(17), len('petStorm!'))) ";

কোডটি ক্র্যাক করা হচ্ছে

কাঙ্ক্ষিত আউটপুটটি 2.956177636986737হয় লম্বা দ্বারা ডাবল বা ডাবল।

কেবলমাত্র অক্ষরগুলি ব্যবহার করে "Stop, Hammer time!", সেখানে চারটি বিল্টিন অপারেটর রয়েছে যা অ-পূর্ণসংখ্যার ডাবলগুলি ফেরত দেয়:

  • mS, যা হলো asin
  • ma, যা হলো atan2
  • me, যা হলো exp
  • mt, যা হলো tan

এগুলির মধ্যে একটিতে একটি রয়েছে m, তাই আমরা তাদের মধ্যে বেশিরভাগ তিনটি ব্যবহার করতে পারি। এখানে কেবল একটি Sএবং এক a

এই অপারেটরগুলির সকলেরই ইনপুট দরকার এবং maকেবলমাত্র দুটি ইনপুট গ্রহণ করে। লংদের ধাক্কা দেওয়ার জন্য আমাদের কাছে কেবল তিনটি উপায় রয়েছে:

  • "...",, যা স্ট্রিংয়ের দৈর্ঘ্যকে ধাক্কা দেয় (কঠোরভাবে 18 এর চেয়ে কম)।
  • H, যা 17 ধাক্কা দেয়।
  • ...!, যা এর যৌক্তিক নোটকে ধাক্কা দেয় ...

আমাদের কাছে মিথ্যা কিছু হিসাবে চাপ দেওয়ার কোনও উপায় নেই ..., তাই সর্বশেষ বিকল্পটি সর্বদা 0 টি ধাক্কা দেয়।

আউটপুট শুরু বা দিয়ে শেষ হয় না 17বা 0। যেহেতু 15 দশমিক সংখ্যা হ'ল একটি ডাবলের জন্য অঙ্কের স্বাভাবিক সংখ্যা, তাই মনে হয় আউটপুটটি একটি সাধারণ দ্বিগুণ।

এটি ধরে নিলে, কোডটি নিম্নলিখিত বিভাগগুলির মধ্যে একটিতে পড়তে হবে:

  • <Long> <mS|me|mt>{1,3}
  • <Long> <mS|me|mt>{x} <Long> <mS|me|mt>{y} ma <mS|me|mt>{z}
  • উপরের যে iকোনওটি লং ( ) বা রাউন্ডিং ( mo) এ কিছু কাস্ট সহ ডাবল প্রয়োগ করা হবে।

দ্বিতীয় ক্ষেত্রে x + y + zহয় হয় 1 বা 2 এবং ল্যাংগুলির মধ্যে একটি 0 বা 17।

বাকীটি ছিল মূলত প্রাণঘাতী শক্তি। কয়েকবার চেষ্টা করার পরে,

18 , {H \ ma me 2.956177636986737 =} =

ফিরে এসেছিল 9, যার অর্থ

H 9 ma me

পছন্দসই আউটপুট উত্পাদন করে।

যা বাকি আছে তা হ'ল স্ট্রিং থেকে 9 টি অক্ষর বাদে। স্পেসগুলি নূপুর এবং লংসে iএকটি নূরে, তাই "petStorm!"সম্ভাব্য পছন্দগুলির মধ্যে একটি।


1
এটি উন্মাদ - আপনি কীভাবে সংখ্যাটি কী তা আবিষ্কার করলেন?
Sp3000

1
আমি এই সংখ্যার লগারিদম (এবং অন্যান্য) অনুসন্ধান করেছি কিন্তু কোনও ফল পাইনি। এখন আমি পেয়েছি যে আমি খুব উচ্চ নির্ভুলতা ব্যবহার করছি।
জিমি 23013

2
@ এসপি 3000: আমি আমার উত্তর সম্পাদনা করেছি।
ডেনিস

1
খুব সুন্দর! আমার ধারণা অনুযায়ী স্ট্রিং থেকে আমার আরও দুটি চরিত্র বের করা উচিত ছিল। আমার মূলতে আমি স্ট্রিংয়ের ভিতরে এখনও ফাঁকা স্থান ছিল, তবে mrদৈর্ঘ্য নেওয়ার আগে একটি । এমনও নয় যে আপনি কোনও সময় সেই বিষয়টিও বুঝতে পারবেন না। ;)
মার্টিন ইন্ডার

25

পাইথন 3, আকার 12, xnor দ্বারা

()and bciprt

কিছুই করে না (এক্সপ্রেশন খালি টুপল তৈরি করে, যা মুদ্রিত নয়)। এটি শর্ট সার্কিট মূল্যায়নের কারণে কাজ করে।


1
পাইথন 3 আইডলিতে, এই ফলাফলগুলি ()
হোসচ 250

@ होस्চ 250 যেহেতু এটি একটি প্রোগ্রামে রয়েছে (অজগর ফাইল), কিছুই নেই বলে আউটপুট হয় না print
matsjoyce

আমি দেখি. আমি কমান্ড লাইন জিনিস থেকে চালানো ছিল।
হোচচ 250

47
.... "জিনিস" ....
TheDoctor

4
@ ইম্রে শর্ট সার্কিটের কারণে - পাইথন টিপল বোঝাই করে এবং টিপলের মান সত্য কিনা তা পরীক্ষা করে, যেহেতু এটি খালি, এটি মিথ্যা। ভেরিয়েবলটি লোড করার কোডটি bciprtকখনই কার্যকর হয় না, তাই এটি কখনই নেমরার তৈরি করে না।
মাটোন 1

20

পাইথন, আকার 74, xnor দ্বারা

any(print(set is
set)for i in oct(chr is
map))and aeeeeeggiilnnpprrrrrstvw

ভাল যে মজা ছিল। FryAmTheEggman, হোস্ট 250 এবং পরামর্শ / সহায়তা করার জন্য আইস্যাককে ধন্যবাদ।


1
সুন্দর কাজ! আমার সমাধান খুবই অনুরূপ ছিল: list(\nprint(range is range)for aacdeeeeehmppprrrrssvwy in\noct(int is int))
xnor

@ xnor LOL যে পরিবর্তনশীল নাম। এটা কি খারাপ যে আমি কখনই ভাবিনি? : পি
FryAmTheEggman

2
@ ফ্রাইআম দ্য এজিগম্যান আমি মনে করি প্রত্যেকে আমার প্রথম পুলিশ থেকে কৌশলটি ব্যবহার করার প্রত্যাশা করেছিল ।
xnor

@ ফ্রাইআম দি এজিগম্যান চিন্তা করবেন না, আপনি একমাত্র নন: পি
এসপি 3000

13

পাইথন 2, আকার 50, জিওবিটস দ্বারা

print 2**2**2*2**2-22-2**2**2**2/2**2**2**2**2/2/2

ফলাফল 42।


1
একটি বক্তব্য রাখুন :) রেফারেন্সের জন্য, মূল ছিল print 2**2**2**2/2**2**2/2**2**2/2-2**2**2*2**2-22, তবে এটি একাধিক বিকল্প সঠিক যে এটি মোটেই আশ্চর্যজনক নয়।
জিওবিটস

13

গল্ফস্ক্রিপ্ট, আকার 13, পিটার টেলর দ্বারা

,22,{.4&?+.}/

এটি এখানে পরীক্ষা করুন।

আর একটি, যা আমি কেবল এসপি 3000 থেকে বড় সাহায্যে ক্র্যাক করেছি। ধন্যবাদ!

সুতরাং আমরা এখানে কিভাবে এসেছি তা এখানে। এসপি 3000 আউটপুটটিতে একটানা সংখ্যক রান লক্ষ্য করেছে:

1,2,3,4,[2608852181],4582,4583,4584,4585,4586,[253225388392299],
142924,142925,142926,142927,142928,[302928],497409,497409

তার ভিত্তিতে আমরা অনুমান করেছি, এটি ছিল একটি ক্রমবর্ধমান ক্রম, যা কেবলমাত্র একটি অবশিষ্ট সংখ্যাগুলির সম্ভাব্য বিভাজনের জন্য অনুমতি দিয়েছে:

1,2,3,4,260,885,2181,4582,4583,4584,4585,4586,25322,53883,92299,
142924,142925,142926,142927,142928,302928,497409,497409

এটি ২৩ টি সংখ্যা, যা ২২ বার ব্লকটি পুনরাবৃত্তি করার জন্য একটি শক্তিশালী সূচক ছিল, পাশাপাশি .(সদৃশ শীর্ষ স্তরের উপাদান) দিয়ে ব্লকটি শেষ করে , যাতে আগের ফলাফলটি স্ট্যাকের পিছনে ছেড়ে যায় এবং চূড়ান্ত পুনরাবৃত্তি প্রদর্শিত হবে স্ট্যাক দুইবার। এটাই 22,{____.}/

এখন শূন্যস্থানগুলির দিকে তাকিয়ে, সেগুলি 4 র্থ শক্তি হিসাবে দেখাবে (যা দুর্দান্ত, কারণ আমাদের রয়েছে 4এবং ?)। আরও স্পষ্টভাবে, তারা বর্তমান সংখ্যার সূচকের চতুর্থ শক্তি। এরপরে আমরা লক্ষ্য করলাম কোন সূচকগুলি একটি ফাঁক তৈরি করেছে:

4,5,6,7, 12,13,14,15, 20,21,..?

বাইনারি এগুলি হয়

00100
00101
00110
00111
01100
01101
01110
01111
10100
10101

তারা সবাই তৃতীয় বিট সেট, যার মানে সূচক সম্ভবত সঙ্গে, bitwise-and'ed আছে 4(যা সুন্দর আবার, কারণ আমরা অন্য করতে পারেন 4সঙ্গে .এবং একটি আছে &)। এটি বিশেষত ভালভাবে কাজ করে, কারণ এই অপারেশনটির ফলাফল হয় 0বা হয় বা হয় 4এবং আমরা যদি এটি ব্যবহারকারীরূপে ব্যবহার করি তবে আমরা হয় 1চতুর্থ শক্তি পাই যা আমাদের প্রয়োজন ঠিক এটিই। সুতরাং আসুন এটি একসাথে রাখা যাক:

22,{.4&?+.}/

ব্লকটি এখানে যা করে:

.      # Duplicate current index
 4     # Push a 4
  &    # Bitwise and
   ?   # Raise index to resulting power
    +  # Add to previous result
     . # Duplicate for use in next iteration

এখন দুটি সমস্যা বাকী ছিল: আমাদের একটি বিভ্রান্তি ছিল যা ,আমরা এখনও ব্যবহার করি নি, এবং প্রথম পুনরাবৃত্তিটি একটি বিশেষ কেস, যাতে পূর্ববর্তী পুনরাবৃত্তির কোনও মূল্য নেই যা আমরা যখন মুখোমুখি হওয়ার সময় জিনিসগুলি যুক্ত করতে পারি +। আমরা খুঁজে পেয়েছি যে ব্যবহারকারীর দ্বারা 303013 এর সম্পর্কিত সম্পর্কহীন মন্তব্যের জন্য ধন্যবাদ যিনি আকস্মিকভাবে উল্লেখ করেছিলেন যে গল্ফস্ক্রিপ্টটি স্ট্যাকের খালি স্ট্রিং দিয়ে শুরু হয় (যদি এসটিডিনে কিছু না থাকে)। সুতরাং আমরা অন্যটি ,শুরুতে ব্যবহার করতে পারলাম স্ট্রিংটিকে একটি রূপান্তরিত করতে 0, যা কেবল পুনরাবৃত্তির শুরু হিসাবে আমাদের প্রয়োজন ছিল।


চিহ্নিত করা. এটি OEIS এর একটি ক্রম দ্বারা অনুপ্রাণিত হয়েছিল যা আমি এখন খুঁজে পাচ্ছি না।
পিটার টেলর

3
এবং এই কারণেই ডাকাতদের জন্য আলাদা থ্রেড রাখা ভাল ধারণা। সুন্দর কাজ!
ডেনিস


11

রুবি, আকার 17, ডোরকনব দ্বারা

p 2,%r~n~i=~'*tN'

দারুণ মজা লাগল। আমাকে এটি সাহায্য করার জন্য Sp3000 ধন্যবাদ! এবং আমি শিখেছি যে %r?...?আক্ষরিকের যে কোনও সীমানার থাকতে পারে। :)


10
অন্যন্ত হচ্ছে বিভ্রান্তিকর জন্য Doorknob করার সাজসরঞ্জাম print, শুধুমাত্র এটা বিভাজিত হবে তা pমুদ্রণের জন্য, %rregexes এবং iকেস-অবশ Regex মিলের জন্য।
Sp3000

11

পিএইচপি, আকার 49, bwoebi দ্বারা

print@substr(new exception,+~$$a+=++$$m+$$i+2+n);

সেটা ছিল একেবারেই মানসিক

এটা পেয়েছিলাম

print@substr(new exception,);

মোটামুটি দ্রুত, আমার এই মুহুর্তে আমার এমন কিছু দরকার ছিল যা -6কমা পরে দেবে, $++$++$++$+=$~main$2রেখেছিল।

মূল ধরাটি হ'ল $a, $mএবং $iসবই NULL, সুতরাং এগুলি পরোক্ষভাবে চলক ভেরিয়েবলগুলিতে ব্যবহার করার অর্থ তারা সকলেই একই ভেরিয়েবলের দিকে নির্দেশ করে। তবে, পিএইচপি মনে হচ্ছে ভেরিয়েবল ভেরিয়েবলগুলি সমাধান করার বিষয়ে কিছু অদ্ভুত কাজ করছে। সাধারণ ভেরিয়েবলের সাহায্যে আপনি পছন্দ মতো কাজ করতে পারেন

echo $a+$a=2;

যা মুদ্রণ করে 4( 2এটিকে নিযুক্ত করা হয় $aএবং তারপরে নিজের সাথে যুক্ত করা হয়)। তবে আমি যদি ভেরিয়েবল ভেরিয়েবলের সাথে একই করি:

echo $$a+$$a=2;

আমি পেয়েছি 2, কারণ এখন প্রথম $$aনিয়োগের আগে মূল্যায়ন করা হয়।

শেষ পর্যন্ত আমি আরএইচএসে কিছু বর্ধিত পরিমাণ বাড়িয়ে কিছু অর্ডার জোর করে পরিচালনা করতে পেরেছিলাম +=যা এই সংযোজন-অ্যাসাইনমেন্টের আগে মূল্যায়ন করতে হয়েছিল। এই পথে আমি পেয়েছিলাম 5যা আমি তখন কেবল বিট-পরিপূরক হতে পারি। এখনও ... কিছু রহস্যময় জিনিস চলছে এবং আমার অর্ধেক জিনিস কেন চেষ্টা করেছে এবং কাজ করে নি সে সম্পর্কে আমার কোনও ধারণা নেই।


রেফারেন্সের জন্য, আমার আসল:print@substr(new exception,~$$mn+=2+$$a+++$$i++);
bwoebi

BTW। আমি আশা করি সমস্ত ডলারের লক্ষণ এবং সত্য যে mainস্ট্রিংয়ের জন্য সমস্ত চিঠিগুলি আপনাকে অনেক বিভ্রান্ত করেছিল। এছাড়াও, নিষ্কাশনের জন্য একটি বরং অস্বাভাবিক পদ্ধতি {main}, আমি মনে করি ;-)
bwebi

@bwoebi দ্য mainসত্যিই আমাকে ভুল পথে চালিত করা হয়নি spotting পর exception, newএবং substr। আমি ভেবেছিলাম এগুলি কেবল পরিবর্তনশীল নাম হবে। ভেরিয়েবল ভেরিয়েবল ব্যবহার করে আসতে আমার একটু সময় লাগল এবং আমি অপারেশনগুলির কিছু ক্রম বের করার জন্য বেশিরভাগ সময় ব্যয় 5করি যা আসলে একটি ফলন করতে পারে যা আমি অন্য সেট বন্ধনী ব্যবহার না করে পরিপূরক হতে পারি।
মার্টিন ইন্ডার

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

@bwoebi আসুন চ্যাট আগামীকাল, এবং আমরা এটি সম্পর্কে কথা বলতে পারেন, কিন্তু আমি এই আজ দীর্ঘ যথেষ্ট অতিবাহিত করেছি। ;) আপনার প্রথম প্রশ্ন হিসাবে, exceptionস্পষ্ট ছিল, যা বিপথগামী চরিত্রগুলি রেখেছিল substrএবং newআশেপাশে পড়ে ছিল। এটির কাজ শুরু করার সময় এটি আমি আক্ষরিক অর্থে প্রথম দেখলাম।
মার্টিন ইন্ডার

9

রুবি, আকার 38, ডোরকনব দ্বারা

[$><<(!$pece60).to_s[rand($win)].succ]

আমি নিশ্চিত যে এটি আসল উত্সের কাছাকাছি নেই। এটি ব্যবহার সত্ত্বেও নিয়ন্ত্রণবাদী এর rand

এই কিভাবে এটি কাজ করে। $><<শুধু আউটপুট। $pece60এবং অপরিবর্তিত $winগ্লোবাল ভেরিয়েবলগুলি, যা অতএব কেবলমাত্র nil(এবং তারা আমাকে কিছু বহির্মুখী চরিত্রগুলি থেকে মুক্তি পাওয়ার অনুমতি দেয়)। !$pece60একটি তোলে trueএবং to_sস্ট্রিং দেয় "true"

যুগে যুগে, আমি সেখানে প্রবেশ করার 2বা -2এটি অ্যাক্সেস করার চেষ্টা করেছি u, তবে তখন আমি বুঝতে পেরেছিলাম যে আমি এটির জন্য কেবল এটি নিতে পারি tএবং .succ(এসকর) কল করতে পারি u

randএকটি nilপ্যারামিটার সহ বিরতিতে এলোমেলো ফ্লোট ফেরত দেয় [0,1)। স্ট্রিংগুলিতে সূচকগুলিতে ভাসমানগুলি ব্যবহার করার সময়, তারা পূর্ণসংখ্যায় কাটা হয়, সুতরাং এটি সর্বদা প্রথম অক্ষরটি ফিরিয়ে আনবে।

পরিশেষে, আমার একটি অতিরিক্ত জুড়ি ছিল []তাই আমি কেবল এটিতে সমস্ত কিছু আবৃত করলাম, কারণ ধন্যবাদ যে রুবিতে সমস্ত কিছুই একটি অভিব্যক্তি।

চ্যাটে কিছু ধারণা ছড়িয়ে দেওয়ার জন্য Sp3000 ধন্যবাদ to


8
রুবি একটি ভীতিজনক চেহারার ভাষা।
ফেভারস

8

গ, এস 1024 দ্বারা 51

c=0xf.cp9,hhtaglfor;main() {;; printf("%d",(++c));}

প্রোগ্রামিং সি এর 20 বছর পরে আজ আমি হেক্সাডেসিমাল ভাসমান পয়েন্ট ধ্রুবক সম্পর্কে শিখেছি।


8

রুবি, 45 (হিস্টোক্র্যাট)

%q[zyfnhvjkwudebgmaclprs x].to_i(36)/51074892

সাব্বাস! কোড গল্ফ সমস্যাতে এটি আমার প্রথম ক্র্যাক এবং মূল পোস্টে মন্তব্য করার মতো পর্যাপ্ত পরিমাণে আমার নেই। আমি অবিলম্বে ব্যবহৃত কৌশলটি স্বীকৃতি দিয়েছি, যেহেতু আমি প্রায়শই প্রোডাকশন কোডে এর ব্যবহার খুঁজে পেয়েছি। বেশিরভাগ কাঠামোটি বের করতে প্রায় 5 মিনিট সময় লেগেছিল এবং পুরো উত্তরটি উপস্থিত হতে কয়েক ঘন্টা।

ব্যাখ্যা:

  • %q[]স্ট্রিং তৈরির জন্য একটি বিকল্প পদ্ধতি। প্যারেন্টেসিস এবং কোঁকড়া ধনুর্বন্ধনী ব্যবহার করা যেতে পারে।
  • String#to_i রুবিতে কোনও বেসে 2 থেকে 36 পর্যন্ত সংখ্যা গ্রহণ করে It এটি স্ট্রিংয়ের প্রথম অক্ষরটিকে অগ্রাহ্য করবে যা সংখ্যার অংশ নয়, সুতরাং কোনও অতিরিক্ত অক্ষর স্থানের পরে "ফেলে দেওয়া" যাবে can

এবং আমি এখানে কোডটি ক্র্যাক করার জন্য ব্যবহার করেছি:

require 'set'

# return true if the string is made up of unique characters
def uniq(s)
  a = s.each_char.to_a
  return a == a.uniq
end

def uniq_while_same(a,b)
  s = Set.new
  a.each_char.zip(b.each_char).each do |ai, bi|
    return true if ai != bi
    return false if s.include? ai
    s << ai
  end
  return true
end

def ungolf(answer)
  # For each base that even makes sense
  [            36, 35, 34,     32, 31, 30,
   29, 28, 27, 26, 25, 24, 23,     21, 20,
   19, 18, 17, 16, 15, 14, 13, 12,     10].each do |base|
    # Ignore bases where it is not possible to create a unique-string number greater than answer
    next if answer > base ** base
    # Pick digits for the denominator that are not duplicates of the digits in base
    denominator_digits = ('1234567890'.each_char.to_a - base.to_s.each_char.to_a)
    # For each permutation of those digits for the denominator
    (1..10).each do |denominator_length|
      denominator_digits.permutation(denominator_length) do |denominator_s|
        # Maybe the denominator is in octal
        denominator_base = 10
        if denominator_s[0] == '0'
          next if denominator_s.include?('8') || denominator_s.include?('9')
          denominator_base = 8
        end
        denominator_s = denominator_s.join
        denominator = denominator_s.to_i denominator_base
        print "#{"\b"*64}(%q[#{(answer * denominator).to_s(base).ljust(36)}].to_i #{base})/#{denominator_s.ljust(10)}" if rand < 0.01
        # Ignore denominators that are definitely impossible to have answers for
        next unless uniq_while_same "qtoi#{base}#{denominator_s}#{(answer * denominator).to_s(base)}",
                                    "qtoi#{base}#{denominator_s}#{((answer + 1) * denominator).to_s(base)}"

        # For each numerator that gives answer when divided by the denominator
        (answer * denominator...(answer + 1) * denominator).each do |numerator|
          print "#{"\b"*64}%q[#{numerator.to_s(base).ljust(36)}].to_i(#{base})/#{denominator_s.ljust(10)}" if rand < 0.01
          # Remove any that are still not unique
          s = "#{numerator.to_s(base)}#{base}#{denominator_s}qtoi"
          next unless uniq s
          # Done. Compute which characters need to be thrown away to fill the remaining space
          remains = ('0123456789abcdefghijklmnopqrstuvwxyz'.each_char.to_a - s.each_char.to_a).join
          print "#{"\b"*64}#{" "*64}#{"\b"*64}"
          return "%q[#{numerator.to_s(base)} #{remains}].to_i(#{base})/#{denominator_s}"
        end
      end
    end
  end
  print "#{"\b"*64}"
  puts "\nnone"
  return nil
end


print ungolf 9410663329978946297999932

ধাঁধার ভিতরে এনপি সমস্যা এম্বেড করার উপায়। আমি পুরোপুরি অস্থির-স্নিপড হয়েছি। সাবাশ!


আমি আপনার জন্য মূল উত্তরে একটি মন্তব্য যুক্ত করেছি।
ফায়ারফ্লাই

এটি দুর্দান্ত (এবং উদ্দেশ্যযুক্ত উত্তরের নিকটে), তবে প্রযুক্তিগতভাবে বৈধ নয় কারণ এর আউটপুট নেই।
হিস্টোক্র্যাট

* ফেসপাল ভাল আমি এখনও মজা ছিল।
charredUtensil

2
@ চার্রেডটেনসিল যদি আপনার স্ক্রিপ্টটি আরও কিছুক্ষণ চালাতে আপত্তি না করে তবে আমি মনে করি যে মুদ্রণটি pএক্সপ্রেশনটির আগে কেবল স্থানান্তরিত করছে । সম্ভবত আপনি বাকী অক্ষরগুলি ধ্রুবকগুলি তৈরি করতে ব্যবহার করতে পারেন you've
ফায়ারফ্লাই

আমার আসলে এটি আবার চালানোর দরকার নেই। স্ট্রিংয়ের শেষ কয়েকটি অক্ষর ফলাফল পরিবর্তন না করেই পুনরায় সাজানো যায় - p %q[zyfnhvjkwudebgmaclrsx].to_i(36)/51074892আমি জানি আমি যদিও আমার আসল ক্র্যাকিংয়ের প্রচেষ্টাটি ভেঙে দিয়েছি :)
charredUtensil

7

পাইথন [যে কোনও] শেল সাইজ 44, ক্যারিডরক দ্বারা

__name__[3]  or (enfin_____[42], manager[1])

আমি নিশ্চিত যে এর চেয়ে আরও বেশি কিছু হওয়ার কথা ছিল, তবে যেহেতু __name__সমান হয় __main__তাই চতুর্থ চরিত্র 'এ' নির্বাচন করা হয় এবং বাকী রেখার মূল্যায়ন কখনই হয় না।


কেবলমাত্র রেফারেন্সের জন্য মূল প্রোগ্রামটি হ'ল[__name__ for ___name__ in range(1,4)][2][3]
ক্যারিডর্ক

7

পার্ল, আকার 36, চিকিত্সা অসম্পূর্ণ দ্বারা

$_=rof;for$i(1..2129<<7){$_++}print;

আর একটি কঠিন।


1
ভাল হয়েছে :-) এটা ঠিক।
চটজলদি ossifrage

ধন্যবাদ সেই প্রোগ্রামটিতে আপনার কিছু খুব সুন্দর 'পার্ল বৈশিষ্ট্য' লুকানো ছিল।
grc

7

সিজেএম, আকার 13, ব্যবহারকারী 23013 দ্বারা

G,Cf#If/sE*K%

এটি এখানে পরীক্ষা করুন।

হাত দ্বারা সমাধান, যেমন:

প্রথমত, নন-সিজেমারদের জন্য কিছু পটভূমি:

  • CEGIKসব ভেরিয়েবল, যা হয় প্রাক ইনিশিয়ালাইজ হয় 12, 14, 16, 18, 20, যথাক্রমে।
  • s শীর্ষ স্ট্যাক উপাদানকে একটি স্ট্রিতে রূপান্তর করে।
  • স্ট্রিংগুলি প্রযুক্তিগতভাবে কেবল অক্ষরের অ্যারে হয়।
  • fসুন্দর যাদু। এই উত্তরটি উদ্দেশ্য পূরণকল্পে, সরলীকৃত সংস্করণ যা, একটি বিন্যাস জন্য a, কিছু অন্যান্য মান bএবং একটি অপারেটর g, ক্রম abfgমানচিত্র g(_,b)সম্মুখের a(যেখানে প্রতিটি উপাদান aমধ্যে যায় _স্লট)।
  • / বিভাজন এবং বিভাজনকারী অ্যারে (অন্যান্য জিনিসের মধ্যে)।
  • * গুণ এবং অ্যারে পুনরাবৃত্তি (অন্যান্য জিনিসের মধ্যে)।
  • %মডুলো এবং কিছু অদ্ভুত অপারেশন, যা ad%অ্যারে aএবং পূর্ণসংখ্যার আকারে dপ্রতিটি ধরণের dউপাদান নেয় a(যেমন পাইথনের প্রস্থের প্রস্থের সাথে কাটা d)।
  • # এক্সপেনশনেশন (অন্যান্য জিনিসের মধ্যে)।
  • ,রেঞ্জ মধ্যে সক্রিয় সংখ্যা (থেকে 0থেকে n-1) এবং আয় একটি অ্যারের দৈর্ঘ্য।

ঠিক আছে, এটাই তো ...

এটা মোটামুটি সুস্পষ্ট ছিল যে আমাদের ,একটি সংখ্যাকে একটি পরিসরে পরিণত করার দরকার ছিল , কারণ অ্যারে পাওয়ার একমাত্র অন্য উপায়টি একটি বৃহত সংখ্যা তৈরি করা এবং এটি দিয়ে একটি অক্ষরের অ্যারেতে পরিণত sকরা হত - তবে তারপরে আমরা কোনও কিছুই করতে পারতাম না এটি আরও গাণিতিক। এবং fএস এর সাথে কিছু করার জন্য আমাদের একটি অ্যারের দরকার ।

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

সুতরাং আমি বুঝতে পেরেছি, সম্ভবত তিনি সংখ্যার সাথে ছোট রাখছেন না %, তবে পরিবর্তে তিনি বিশাল সংখ্যার একটি অ্যারে তৈরি করেন, তাদের স্ট্রিং প্রতিনিধিত্বের সাথে সম্মিলিত করেন s, তবে তারপরে কেবল এর সাথে কিছু বিজোড় টুকরো বেছে নেন %। তাই আমি নিম্নলিখিত কাঠামোটি নিয়ে কিছুটা খেলেছি:

__*,_f#_f/s_%

(আপনি _f/প্রথমটি করতে পারবেন না , কারণ এটি কমপক্ষে প্রথম 12 টি উপাদানের শূন্য দেয় yield)

যেখানে _ভেরিয়েবলের কিছু ক্রমান্বয়ে রয়েছে। আমি বিরক্ত হওয়ার আগে আমি তাদের সকলের চেষ্টা করিনি, এবং এর সাথে প্রধান সমস্যাটি হ'ল অঙ্কের ফলস্বরূপ ক্রমটি বরাবরই দীর্ঘ way

এক পর্যায়ে এটি আমার কাছে ঘটেছিল যে আমাদের এত বড় পরিসরের প্রয়োজন হবে না (অর্থাত্ দুটি সংখ্যার পণ্য), পরিবর্তে যদি আমরা *ফলাফলটি ব্যবহার করে স্ট্রিংটি পুনরাবৃত্তি করতে ব্যবহার করি । পরামিতি অমিলের কারণে *এবং %এই ফলাফলের কোন পুনরাবৃত্তি উত্পাদ হবে:

_,_f#_f/s_*_%

আমি যা খুঁজছিলাম তার খুব কাছাকাছি দৈর্ঘ্যের এই ফলাফল পেয়েছে। আমি আসলে তাদের 240 টি চেষ্টা করে দেখতে পারতাম, তবে মোটামুটি দ্রুত (তৃতীয় বা চতুর্থ প্রচেষ্টা), আমি হোঁচট খেয়েছি

E,Cf#If/sG*K%

যা ফলন দেয়

03081942753650251594592190492275006661328850322159030034930530649722385533653290754678977

এবং আমি প্রথম ছয় অঙ্কের একটি ম্যাচ কাকতালীয় হবে না। সুতরাং প্রশ্নটি ছিল আসল গণনাটিকে বিঘ্নিত না করে কীভাবে এটি পুনরায় সাজানো যায়:

  • আমি পরিবর্তন করতে পারিনি Kকারণ এটি সম্পূর্ণরূপে বিভিন্ন অঙ্ক বেছে নেবে।
  • আমি পরিবর্তন করতে পারিনি Cবা Iকারণ এটি দুটি মানচিত্রের ক্রিয়াকলাপের ফলে সংখ্যার পরিবর্তন করবে।
  • যদি আমি পরিবর্তন Gকরি তবে এটি কেবল পুনরাবৃত্তির সংখ্যা পরিবর্তন করবে, যা ফলাফলের দৈর্ঘ্য পরিবর্তন ছাড়া কিছুই করবে না। (যা ভাল.)
  • যদি আমি Eএটি পরিবর্তন করে যা অ্যারের পরিসর পরিবর্তন করে, তবে পরিসীমাটি এখনও শুরু হবে [0 1 2 3 ...], সুতরাং এটি গণনাটিকে প্রভাবিত করবে না। এটা তোলে হবে বেস স্ট্রিং দ্বারা ফিরে দৈর্ঘ্য প্রভাবিত s, যা অর্থ দাঁড়ায় এই যে K%অতিরিক্ত পুনরাবৃত্তির উপর বিভিন্ন সংখ্যার নির্ণয় করা যাবে।

সোয়াপিং তাই আমি ঠিক চেষ্টা Eএবং Gএবং voila:

030819828850379075460427536222159187897761502517030034671154875945928930530907551421904962649729

সংক্ষেপে, এখানে কোড কী করে:

G,            "Push [0 1 2 3 ... 13 14 15].";
  Cf#         "Raise each element to the 12th power.";
     If/      "Divide each element by 18.";
        s     "Concatenate all numbers into a string.";
         E*   "Repeat 14 times.";
           K% "Pick every 20th digit.";

7

এপিএল, আকার 17, ব্যবহারকারী 23013 দ্বারা

+(3*3)3,(***)\3 3

আমি কাটিয়েছি পর্যন্ত অত্যন্ত দীর্ঘ এই ফাটল করার চেষ্টা করছে। আমি যদি এপিএলটি প্রবেশ করত জানতাম তবে এটি আরও দ্রুত চলে যেত।

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


6

পাইথ, আকার 11, ইসাএইচজি দ্বারা

:\\w$ ",d,N

এটি ঠিক সেখানে কিছু বোঝা বাগ অপব্যবহার। এটি সংকলন করে:

Pprint("\n",at_slice("\",input(), ",d,N))

\\প্রসঙ্গত বাগটি তার "\"পরিবর্তে সংকলন করে "\\", যা আপনাকে পাইথকে একটি স্ট্রিংয়ে সংকলন করতে দেয়।


উচিত Pprintহবে print, অথবা অন্তত pprint?
ফায়ারফ্লাই

@ ফায়ারফ্লাই এটিই ডিবাগ আউটপুট বলেছিল। হতে পারে পাইথ ইন্টারপ্রেটার তার নিজস্ব পিপ্রিন্ট সংজ্ঞায়িত করে?
মার্টিন ইন্ডার

ওহ, ঠিক আছে, কিছু মনে করবেন না।
ফায়ারফ্লাই

6

পাইথন, আকার 69, এসপি 3000 দ্বারা

print(sum(list(map(ord,str((dict(((str(dict()),list()),)),str()))))))

এটা কঠিন ছিল ...


1
নিস! রেফারেন্সের জন্য, মূলটি ছিল print(sum(map(ord,str((dict(list(((str(),str(dict())),))),list())))))তবে স্পষ্টতই মূলশব্দগুলির বিবিধ ক্রমান্বয়ে কাজ করবে।
এসপি 3000

2
এটি সেখানে প্যারেনের একটি এলআইএসপি স্তরের!
xnor

6

পাইথন 3, 37 বাইট, এসপি 3000 দ্বারা

print(sum(b"a".zfill(len(str(...)))))

বিব্রতকরভাবে এখন পর্যন্ত সবচেয়ে শক্তিশালী অংশটি স্ট্রিংকে বাইটে রূপান্তর করতে সন্ধান করছিল। আমাকে এটিতে ঘুমাতে হয়েছিল, এবং রাতে বুঝতে পারলাম 'দুহ, এটি একটি বাইটস আক্ষরিক!'


আহা খুব সুন্দর করে
ফেলেছে

আমি এলিপসিস এবং জাইফিল দেখেছি, তবে বাইটসের জিনিসগুলি সম্পর্কে জানি না। এগুলি পূর্ণসংখ্যার গল্ফিং অ্যারেগুলিতে কার্যকর হতে পারে!
শুক্রবার

দারূন কাজ! আমি কেবল মুদ্রণ এবং .zfill দেখেছি এবং আমি জানতাম যে যোগফল এটির অংশ হতে পারে তবে আমি এটি সমাধান করতে পারিনি। একটি +1 আছে।
হোছ 250

6

পিএইচপি, 53, প্লিজস্ট্যান্ড দ্বারা

শেষ পর্যন্ত এটি ফাটল:

for($d=57,$o=35;$o+$d<999;)$o+=printf("$d%o",$d+=$o);

সমাধানটি খুব দ্রুত এসেছিল যখন আমি লক্ষ্য করেছি যে ক্রমটি দশমিক এবং অষ্টাল সংখ্যাগুলি পরিবর্তিত করে:

Dec: 57...92...132...177...228...285...348...417...492....573....661....756....858....
     571349220413226117734422843528553434864141775449210755731225661136475615328581707
Oct: ..134..204...261...344...435...534...641...754...1075...1225...1364...1532...1707
==Dec:  92  132   177   228   285   348   417   492    573    661    756    858    967

এছাড়াও, প্রতিটি সংখ্যার ব্যবধানগুলির মধ্যবর্তী ব্যবধানগুলি ফিরে আসা মানের সমান হারে বৃদ্ধি পায় printf()(অর্থাত্, লিখিত অক্ষরের সংখ্যা)।


3
বাহ, চমৎকার গোয়েন্দা কাজ!
Sp3000

6

পাইথন 2, আকার 132, vi দ্বারা।

exec('from string import printable as e\nprint "cqance"\x2Ereplace("q",e[len("fgiillmmooprrsstt")])or ",,,\016:::S[]____tuuvyy" ""')

সমস্ত ব্যাকস্ল্যাশ এবং উদ্ধৃতি চিহ্নের জন্য ধন্যবাদ :)


সম্পাদনা করুন: আপডেট হওয়া 96-চরিত্রের সংস্করণ:

exec "try:exec'from __future__ import braces\\nt(12)'\nexcept SyntaxError as q:print(q[0][6:])"

এটি সম্পূর্ণরূপে https://codegolf.stackexchange.com/a/41451/32353 এ অ্যালেক্সের সমাধান থেকে নেওয়া হয়েছে


হি, দুর্দান্ত অভিযুক্ত সমাধান কী ছিল তা ভাবছেন ...
ফায়ারফ্লাই

এটি কোনও উদ্দেশ্যযুক্ত সমাধান নয়। আসল সমাধানের মতো কোনও "থ্রো-অ্যাওর" জিনিস নেই fgiillmmooprrssttবা আছে ,,,\016:::S[]____tuuvyy
vi।

exec? আমার কোডটি সংক্ষিপ্ত হয়ে গেছে ... আমি ভুলে যাওয়ার কারণে এটি compile+ দিয়ে অনুকরণ evalকরছিলাম exec...
vi।

সংক্ষিপ্ত সংস্করণ প্রয়োগ করা হয়েছে। মূল কৌশলটি বের করার চেষ্টা করুন।
vi।

5

Yjnypn দ্বারা সিজেএম, আকার 15

98,{7%}%{6+}%:+

প্রদত্ত চরিত্রগুলি থেকে, আমি অনুমান করেছি যে এটি নিম্নলিখিত তিনটি ফর্মগুলির মধ্যে একটি হতে হবে:

__,{_%}%{_+}%:+
_,{_%}%{__+}%:+
__,{_+}%{_%}%:+

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


দাম্মিট, আমি কেবল এটি সমাধান করেছি: /
অপটিমাইজার


5

পাইথন 2, আকার 61, ফ্রাইআম দ্য এজিজিম্যান দ্বারা

print(dir('~s]l.c:st_''-p_tp.l]-~.:o:Te[_u[.i_')[10][2:][:3])

এটি যদি মূল সাথে মেলে তবে আমি খুব অবাক হব।


এটি হয় না, তবে যাই হোক না কেন অভিনন্দন! আমার কোডটি ছিল:print''.__doc__[::2][::3].split()[1].split('.')[0][:-~-~True]
FryAmTheEggman


@ ফ্রাইআম দ্য এজিগম্যান ওহে বাহ - দুর্দান্ত প্রোগ্রাম! আমি নিশ্চিত হয়েছি আপনি কমপক্ষে dir()'গেট' সন্ধান করতে ব্যবহার করেছেন। এবং হ্যাঁ, উদ্ধৃতিগুলি না থাকলে এটি খুব কঠিন হত।
GRC

5

পাইথন 3, Sp3000, আকার 44

print(~(~(()<((),))<<(()<((),))))<<((()<()))

পাইথন 3 আমাকে এখানে সহায়তা করেছে কারণ Noneউত্তরটি মুদ্রণের পরে আমি কোনও ত্রুটি ঘটতে সক্ষম হয়েছি (কোনও কিছুর দ্বারা বাম দিকে স্থানান্তরিত )।


হুম ... দেখে মনে হচ্ছে আমি আমার প্যারেনস নিয়ে বেশ অপচয় করছি। ছিল print(~(~(()<())<<((()<((),))<<(()<((),)))))মূলত।
Sp3000

5

পিএনএইচপি, আকার 52, কেনারব দ্বারা

_:@print_r(chr(@++$i+pow(3<<5,1)));if($i<2*4)goto _;

(Godশ্বর, আমার _rপ্রত্যয়টি কী করতে হবে তা বুঝতে আমার কতক্ষণ সময় লেগেছে Until যতক্ষণ না আমি লক্ষ্য করেছি এটি ছিল না print, তবে print_r...)


আমি জানি না কিভাবে আপনি এটি :) মূল জিনিসটা নি: _:print_r(chr(3*pow(2,5)+@++$i));if(@$i<4<<1)goto _;
কেনারব

3
@ কেনোরব ক) আপনার কোনও কিছু মুদ্রণ করা দরকার, তাই echoসম্ভব নয়; printরয়ে; খ) আপনার কিছু লুপের প্রয়োজন, তবে একটি forলুপের জন্য পর্যাপ্ত সেমিকোলন ছিল না, এবং ভাল, সেখানে একটি কোলন রয়েছে ... সম্ভবত গোটোর সাথে মিলিয়ে সেখানে একটি লেবেল রয়েছে; গ) তারপরে গোটো-লুপটি বাতিল করতে হলে এটি দরকার। এখন X:print($Y);if($Y)goto X;(এক্স এবং ওয়াই স্থানধারক); d) একটি আছে ++, তবে নেই =, তাই সম্ভবত ++$Z1 থেকে 8 পর্যন্ত কিছু ; e) একটি পূর্ণসংখ্যার কাছ থেকে চিঠি পেতে, আমাদের প্রয়োজন chr()(সাধারণত) - এটি ছিল; চ) এখন আমার কেবল চিআর এর জন্য 96৯ এবং ৮ নম্বর সন্ধান করতে হবে এবং যদি। তারপরে স্থানধারক এবং ভলিউম পূরণ করুন à
bwebi

5

স্টিভ রবিনস দ্বারা পিএইচপি, আকার 54

echo(21<<($$$$$$${$aaaabbbbbbehi==$l&$w^2}^1==1));;;;

আসল সমাধান নয়, আমি মনে করি।


2
হাহাহা, সুন্দর। আমি echoএবং এর মধ্যে মাছ ধরা দিয়ে শুরু করেছিলাম while, কিন্তু তারপরে 42 টি উত্পাদিত লুপ খুঁজে পেতে বিরক্ত করা যায় না
মার্টিন ইন্ডার

whileআমার আসল একটি ছিল ।
স্টিভ রবিনস

5

সি, এস 1024, দৈর্ঘ্য 70

e='C',f;main(g){Chorkil:f=printf("40%.d",e+e-  -g);}hAx;*hotpoCkats();

শক্ত অংশটি অব্যাহত সমস্ত চরিত্রের উপর নজর রাখার জন্য শেষ হয়েছিল ... সিরিয়াসলি ... আমার প্রায় 10 বার তাদের আবার করতে হয়েছিল। আমাকে চিন্তিত একমাত্র তিনিই .কিন্তু কোনওরকমভাবে আমি এটিকে printfবিন্যাসের স্ট্রিংয়ের মাঝখানে আটকে দিয়েছিলাম এবং এটি অদৃশ্য হয়ে যায়!



5

পেটেল পুদলকের রচিত 34 মাইলের হ্যাস্কেল

main=print(0xb2f3d5^0x7f1f27::Int)

মনে রাখবেন যে এই প্রোগ্রামটি অবশ্যই একটি 32-বিট মেশিনে চালানো উচিত। আপনি যদি এটি পরীক্ষা করতে চান যে এটি সঠিক প্রোগ্রাম এবং আপনার কাছে একটি 64৪-বিট মেশিন রয়েছে, আপনি পরিবর্তে এটি ব্যবহার করতে পারেন:

import Data.Int
main=print(0xb2f3d5^0x7f1f27::Int32)

প্রোগ্রামটির "ফ্রেম" অনুমান করা বেশ সহজ ছিল main=print(0x<hex digits>^0x<hex digits>::Int)। সমস্ত যাদুটি বিভাজন এবং অঙ্কগুলি অর্ডার করার সঠিক উপায় অনুসন্ধানে ছিল। আমি এখানে খুব বেশি স্মার্ট কাজ করিনি, কেবল একটি নিষ্ঠুর-বাহিনী অনুসন্ধান ... যদিও আমি কয়েকটি অঙ্কের সদৃশ হয়েছিল এই বিষয়টি অপব্যবহারের যত্ন নিয়েছিলাম, সম্ভবত বেস এবং খাতায় প্রায় সমান সংখ্যক সংখ্যা ছিল এবং বেসের শেষ অঙ্কটি প্রায় অবশ্যই ছিল না। সম্পূর্ণ অনুসন্ধান কোডটি নীচে অন্তর্ভুক্ত করা হয়েছে; এটি মাল্টিসেট-চিরুনি প্যাকেজ ব্যবহার করে । সম্পূর্ণ অনুসন্ধানটি আমার মেশিনে প্রায় 10:33 লাগে (এবং অবশ্যই কেবলমাত্র একটি সঠিক উত্তর দেয়)।

{-# LANGUAGE NoMonomorphismRestriction #-}
import Control.Monad
import Data.Int
import Data.List (inits, tails, group)
import Numeric
import Math.Combinatorics.Multiset

main = print (searchFor (-1121766947))

searchFor n = do
    nl <- [6,5,7,4,8,3,9,2,10,1,11]
    (l_, r_)  <- chooseSubbag nl digits
    l <- perms l_
    guard (last l /= '2')
    r <- perms r_
    guard ((fromString l :: Int32) ^ (fromString r :: Integer) == n)
    return (l, r)

chooseSubbag n = chooseSubbag' n . group
chooseSubbag' n xss = go (drop (n-1) (concat xss)) n xss where
    go _  n xss | n < 0 = []
    go _  0 xss = [([],concat xss)]
    go [] n xss = []
    go m  n (xs:xss) = do
        (kx, tx) <- zip (tails xs) (inits xs)
        (k , t ) <- go (drop (length tx) m) (n-length kx) xss
        return (kx++k, tx++t)

digits = "1223577bdfff"
fromString = fst . head . readHex
perms = permutations . fromList

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