লাইপোগ্রাম "কুইন"


26

কার্য

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

সংক্ষিপ্ততম প্রোগ্রামের জয়। প্রোগ্রামটি কমপক্ষে একটি বাইট দীর্ঘ হতে হবে।

উদাহরণ

প্রোগ্রামটি যদি হয় এবিসিডি। (# একটি মন্তব্য)

> slangi "ABCD"
A
EBCD          # "FBCD" "JGGJ" "UGDKJGDJK" are all OK
> slangi "EBCD"
C
ABGD          # "EBGD" "UIHDAIUTD" are all OK
> slangi "ABGD"
B
AFCD
> slangi "AFCD"
Z
ABCD

slangiকল্পিত ভাষার জন্য দোভাষী কোথায় ।


এই চ্যালেঞ্জ কম ভার্জোজ ভাষা না? নির্দেশের নামের জন্য বেশ কয়েকটি শব্দ ব্যবহার করে, সুতরাং অক্ষরগুলি এড়ানো খুব কঠিন এবং / অথবা অসম্ভব e
LegionMammal978

2
এটি ছাড়া ইংরেজিতে লেখা খুব কঠিন e, তবুও গ্যাডসবি তা করেন it
আকংকা

আমি কোন কুইন ফাংশন ধরে নিচ্ছি?
মামা ফান রোল

উত্তর:


24

সিজেম, 45 41 38 35 বাইট

{`"OX$_?"+_l&{{H)+`}/"\He,}":)}&}_~

যদি ইনপুট চরিত্রটি কোনও অক্ষর না হয় তবে "$&)+,/:?HOX\_`el{}এই প্রোগ্রামটি নীচেরটি, নিজের থেকে কিছুটা পরিবর্তিত সংস্করণ মুদ্রণ করে। এটি অনলাইন চেষ্টা করুন!

{`"OX$_?"+_l&{{H)+`}/"\He,}":)}&}OX$_?

অন্যথায়, প্রোগ্রামটি নিম্নলিখিতটি, সংশোধনটির অস্পষ্ট সংস্করণটি মুদ্রণ করে। এটি অনলাইন চেষ্টা করুন!

''r'4'a'j'6'q'Q'4'='q'~'8'''Z';'='r''A'4'n'Z'w'>''4'L';''8''a'j'6'q'Q]If-~

নোট করুন যে কয়েকটি অক্ষর অপরিশোধিত। এটি অনলাইন চেষ্টা করুন!

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

{`"OX$_?"+_l&{{H)+`}/"\He,}":)}&}_~

{                               }    Define a code block.
                                 _~  Push a copy and execute the copy.
 `                                   Push a string representation of the block.
  "OX$_?"                            Push that string.
         +_                          Concatenate and push a copy.
           l&                        Intersect the copy with the input.
             {                }&     If the intersection is non-empty:
              {    }/                  For each character of the concat. strings:
               H)                        Push 18.
                 +                       Add it to the character.
                  `                      Inspect; turn 'c into "'c".
                     "He,}"            Push that string.
                           :)          Increment each char. Pushes "If-~"

প্রথম সম্ভাব্য আউটপুট প্রোগ্রামে, আমরা ~অন্যান্য প্রোগ্রামে এটি ব্যবহার করতে সক্ষম হতে ব্যবহার এড়াতে চাই । সুতরাং পরিবর্তে _~পরিবর্তিত প্রোগ্রামটি সমাপ্ত হয় OX$_?যা নীচের মত কাজ করে।

O        Push "" (falsy).
 X$      Push a copy of the code block.
   _     Push yet another copy.
    ?    Ternary if; since "" is falsy, execute the second copy.

অবশেষে, বাকি আউটপুট প্রোগ্রামে,

''r'4'a'j'6'q'Q'4'='q'~'8'''Z';'='r''A'4'n'Z'w'>''4'L';''8''a'j'6'q'Q]

সেই সমস্ত অক্ষরগুলিকে একটি অ্যারেতে আবৃত করে, সুতরাং নিম্নলিখিত স্ট্রিংটিকে পুশ করে।

"'4aj6qQ4=q~8'Z;=r'104nZw>'4L;'8'j6qQ"

If- স্ট্রিংটি পুশ করে প্রতিটি অক্ষর কোড থেকে 18 বিয়োগ করে

"{`\"OX$_?\"+_l&{{H)+`}/\"\He,}\":)}&}OX$_?"

যা ~মূল্যায়ন করে।


18

জাভাস্ক্রিপ্ট (ES6), 356 340 327 308 303 263

এখন Function`...```দ্বিতীয় প্রোগ্রামের জন্য ব্যবহার :

f=(b=y=>[for(x of`f=${f};f()`)x.charCodeAt().toString(y).toUpperCase()])=>alert([`eval('\\${b(8).join('\\')}')`,`eval(String.fromCharCode(${b(10).map(x=>'+9-8'.repeat(x))}))`,'Function`\\x'+b(16).join('\\x')+'```'][1+"0e1v2a3l4(5'6'7)\\".indexOf(prompt())%2]);f()

ফাংশনটি তিনটি সম্ভাব্য প্রোগ্রামের মধ্যে নিজেকে প্যাক করে:

  1. প্রথম প্রোগ্রামটিতে evalপ্রতিটি অক্ষরের সাথে ফাংশনের কোডযুক্ত একটি স্ট্রিং আক্ষরিককে আহ্বান জানানো হয় অষ্টাল মান হিসাবে পালানো।

    Eval ( '\ 146 \ 165 ...')
  2. দ্বিতীয় প্রোগ্রামটি javascript:প্রতিটি অক্ষরের URL এনকোডযুক্ত ফাংশনের কোড যুক্ত URL এ ব্রাউজারটি পুনঃনির্দেশ করে । এই প্রথম উপায়টিই আমি প্রথম বন্ধনী ব্যবহার না করে কোড মূল্যায়ন করতে ভাবতে পারি। এটি 'ইভাল' অক্ষরগুলি থেকেও পালিয়ে যায়।

    জানালা [ "\ x6coc \ x61tion"] [ "ঘন্টা \ x65f"] = "ঞ \ x61 \ x76 \ x61script:% 66% 75 ..."
  3. শেষ প্রোগ্রামটি বেদনাদায়ক দীর্ঘ। এটি +9-8প্রতিটি অক্ষর কোড পেতে একবারে একটি ( ) যুক্ত করে ফাংশনের কোড তৈরি করে । এটি অষ্টাল অঙ্কগুলি ব্যবহার এড়ানোর জন্য।

    Eval (String.fromCharCode (+ 9-8 + 9-8 + 9-8 + 9-8 ...))

সঠিক প্রোগ্রামটি ইনপুট চরিত্রের জন্য যত্ন সহকারে নির্মিত স্ট্রিংটি অনুসন্ধান করে সূচিত হয়:

[`program_1`,`program_3`,`program_2`][1+"0e1v2a3l4(5'6'7)\\".indexOf(prompt())%2]

এখানে একটি অবারিত, অনির্ধারিত সংস্করণ। উত্সে নতুন লাইনের কারণে এটি কাজ করতে পারে না।

function f() {
    // convert source code of current function to bytes
    var bytes = Array.map(f + 'f()', x => x.charCodeAt());

    // pack this function's code in one of three possible programs,
    // depending on the input
    var input = prompt();

    // PROGRAM 1 - only contains characters: eval(')01234567\
    // eval('\146\165...')
    var source = "eval('\\" + bytes.map(x => x.toString(8)).join('\\') + "')";

    // PROGRAM 2 - doesn't contain characters: eval('')
    // window["\x6coc\x61tion"]["hr\x65f"]="j\x61\x76\x61script:%66%75..."
    // -> window["location"]["href"] = "javascript:..."
    if ("eval(')".includes(input)) {
        source = 'window["\\x6coc\\x61tion"]["hr\\x65f"]="j\\x61\\x76\\x61script:%';
        source += bytes.map(x => x.toString(16).toUpperCase()).join('%') + '"';
    }

    // PROGRAM 3 - doesn't contain characters: 01234567\
    // eval(String.fromCharCode(+9-8+9-8+9-8+9-8...))
    if ('01234567\\'.includes(input)) {
        source = "eval(String.fromCharCode(";
        source += bytes.map(x => '+9-8'.repeat(x)).join(',') + '))';
    }

    console.log(source);
}
f()

function f(){ ... };f()হতে পারে (f=_=>{ ... })()। এখানে একটি উদাহরণ রয়েছে: es6fiddle.net/iiz2nq0l
ইসমাইল মিগুয়েল

আরও ভাল করে: f=(_=prompt())=>...;f()। ইনপুট হিসাবে সংরক্ষণ করা হয় _
মামা ফান রোল

এছাড়াও, কনসোল.লগের প্রয়োজন নেই, ফাংশন আউটপুট ঠিক আছে।
মামা ফান রোল

Function`[code]`.call``;পুনর্নির্দেশের পরিবর্তে, আপনার জন্য কাজ ব্যবহার করবেন না ? এখানে একটি কার্যকারী উদাহরণ রয়েছে: es6fiddle.net/ij023v49 (দেখুন? না evil()! এর্ম , মানে eval()...)
ইসমাইল মিগুয়েল

ভাল, আপনি আজ কিছু শিখেছি। কেবল সচেতন থাকুন যে thisঅবজেক্টটি সেই খালি টেম্পলেট স্ট্রিং হবে। এটি Functionকনস্ট্রাক্টরের উপর নির্ভর করে , যা আপনাকে সঞ্চালনের পরিবর্তে কোনও ফাংশন তৈরি করতে দেয় eval()। ফাংশনটিতে প্রথম প্যারামিটারের মধ্যে কোড থাকবে। আসলটি পেতে, ব্যবহার করে আমি এটি প্রচুর windowব্যবহার করি Function('return this')()। যেহেতু আপনি ব্যবহার করতে পারবেন না (), তাই আপনি চালাতে পারেন এমন একটি ব্যবহারযোগ্য ফাংশন স্পিট করার চেষ্টা করার জন্য আমি ES6 এর সামান্য দয়া দেখিয়েছি ()। তার জন্য, আপনার প্রয়োজন .call()পদ্ধতি, যা একটি নতুন thisঅবজেক্টের সাথে ফাংশনটি কল করে ।
ইসমাইল মিগুয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.