গল্ফ আপনি আরও ভাল জন্য একটি ডাবল কুইন!


18

শুভ সন্ধ্যা মহিলা এবং ভদ্রলোক।

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

আপনার চ্যালেঞ্জ হ'ল হোয়াইটস্পেস এবং আপনার পছন্দের অন্য কোনও ভাষা উভয়ই সংকলন করে এমন একক কুইন রচনা করা । উভয় কুইনের অবশ্যই একেবারে অভিন্ন আউটপুট থাকতে হবে (যা কোয়াইন হিসাবে উত্স কোডের সাথে একেবারে অভিন্ন)। আপনার কুইন দৈর্ঘ্যে 3 বাইটের বেশি হওয়া উচিত।

আপনার স্কোর হ'ল বাইটগুলিতে আপনার উত্স কোডের আকার।

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

শুভকামনা।


1
একটি এক্সএক্সডি হেক্স ডাম্প কি করতে পারে?
ইলমারি করোনেন

হ্যাঁ. আমি এটা গ্রহণ করব।
lochok

উত্তর:


19

হোয়াইটস্পেস এবং পার্ল, 992 975 টি অক্ষর

শুভ সন্ধ্যা মহিলা ও মহোদয়গণ.

শুরু করার জন্য, এখানে বেস 64 এ আমার জমাটি এনকোড করা আছে, যা আমি মনে করি একটি বৃহত্তর হোয়াইটস্পেস প্রোগ্রামটি যোগাযোগ করার সর্বোত্তম উপায়। (আপনি সত্যিই কোনও এনকোডিং ব্যবহার করতে চান না যা কোনও শ্বেতস্থানকে যেমন রয়েছে তেমন ছেড়ে দেয়, তাই আরও কিছু "পঠনযোগ্য" বাছাই করার কোনও মানে নেই))

c2F5PDwgeDI7c2F5PDwwLDAgIApzYXk8PCB4MjtzYXk8PDAsMCAgCgoJCQogICAJCSAgCSAgCSAJ
CSAgCSAgCQkgCSAJIAkJCQkJICAJCSAJCQkgCQkJCQkgCSAJIAkJIAkgCSAgIAkJCQkJICAgCQkg
IAkgCQkgCSAJCSAJICAgIAkJCQkgCSAgCSAJCSAJICAgIAkgCQkgICAJICAgICAgCQkJIAkJCQkJ
IAkJCSAJCQkJICAgICAJCQkgCSAgICAgIAkJCQkJICAgICAgCQkgICAJCSAgICAJCQkJCQkJCSAg
CSAJIAkgICAJCQkgICAJCQkJCSAgCQkJCSAJICAgIAkgCQkJCQkgCSAgICAgCSAgCSAJICAgICAg
CSAgICAJICAgICAJCSAgIAkJCSAJIAkJCQkJCSAJCSAJIAkgICAgICAgCQkgIAkgICAgICAgICAg
IAkJICAgCSAJCQkgCSAgICAgCQkJCQkJIAkgICAgCQkJCSAJCQkJICAJCQkgICAJCQkgCSAgCSAg
IAkJCQkgIAkJIAkJCSAgIAkJCSAJCQkgCQkJICAJCSAJICAJIAkJCSAJIAkgCQkgICAgIAkgCSAJ
ICAJICAJIAkJICAgICAJIAkgICAgCQkJCSAgCSAJCSAJIAkJIAkgIAkgCSAJCSAJCSAJCSAJCQkg
CQkJICAgIAkJCSAgCSAgCQogICAJICAgICAJCQkJCSAJCSAJIAkgCSAJICAJCQkgICAJICAgCSAg
ICAJCSAJICAgICAgICAgCSAgIAkJCQkgCQkgICAgCQkgCSAJICAJCQkgCQkJCSAJCQkgICAJICAg
IAkgCSAJCQkgIAkJCQkgCSAJCSAJIAkgCQkJCSAJICAJIAkJIAkgICAJCiAKICAKICAgIAogCSAg
CQoKICAJCiAKICAgIAkJCQkgCSAKCSAJCQkKICAgICAJCQkJIAkgCgkgCSAgCiAgIAkJCgkgIAoK
CQkJCiAKCgoJIAkKICAgCSAgIAkgIAoKIAkKIAkgIAkKCiAJIAogICAJIAoKIAkKCiAJIAoKIAkK
CQogCSAgIAkgCgogCQoKCgoKICAgCiAgIAogCiAKIAkKCiAJCgogICAgCiAKIAoJIAogCiAgICAJ
IAoJIAkJIAoJICAgCSAKCSAJIAogCSAgCgogIAogCiAgICAJCQoJIAkJICAJCSAJCQkKCSAgCiAg
CQkJICAgCgkgCQkgICAJICAgICAKCSAgIAkKICAgICAJCQoJIAkgIAogICAJCQoJICAKCgkJCiAK
CgoJCjAK

উত্সের দৃশ্যমান অংশগুলিকে হাইলাইট করে এমন একটি অংশ এখানে দেওয়া হয়েছে। একটি ট্যাব নির্দেশ করতে এবং একটি নতুন লাইন নির্দেশ করতে ব্যবহৃত হয় ।

say<< x2;say<<0,0  ↲
say<< x2;say<<0,0  ↲
↲
⇥⇥↲
   ⇥⇥  ⇥ [... etcetera ... skipping rest of a really long line ...]↲
   ⇥⇥⇥ ⇥⇥[... etcetera ... shorter but still quite a long line ...]↲
 ↲
  ↲
    ↲
 ⇥  ⇥↲
[... etcetera ... whole lotta whitespace in here ...]
⇥⇥↲
 ↲
↲
↲
⇥↲
0↲

এই চ্যালেঞ্জের দ্বিতীয় ভাষার জন্য পার্ল ছিল প্রাকৃতিক পছন্দ, কমপ্যাক্ট কুইন লেখার জন্য সাধারণ-উদ্দেশ্যমূলক ভাষাগুলির মধ্যে একটি। আমার সংক্ষিপ্ততম পার্ল কুইন 19 বাইট:

say<< x2
say<< x2
 

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

পার্ল ইন্টারপ্রেটারের দৃষ্টিকোণ থেকে, ডাবল কুইনের উত্স ফাইলের প্রথম লাইনে দুটি বিবৃতি রয়েছে যা পুরো প্রোগ্রামটিকে যথাযথ করে তোলে, কারণ বাকী বিষয়বস্তু দুটি উদ্ধৃত স্ট্রিং রয়েছে। প্রথম স্ট্রিংটি পার্লের পুনরাবৃত্তি লাইন এবং ফাঁকা তৃতীয় লাইনের দ্বারা সীমিত করা হয়। দ্বিতীয় স্ট্রিংটি সমস্ত শ্বেতস্থান এবং উত্সের চতুর্থ লাইন থেকে 0ফাইলের নীচে ডিলিমিটার পর্যন্ত চলে।

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

# Representation of "say<< ;say<<0,0  \n" in base 122 as ASCII chars.
PERLCODE = 44892457841068708924520433691075560592081

# Represention of the whitespace program, following the "push PERLCODE"
# instruction, in base 3 (see comments on wsout).
WSCODE = 9823454421986355730445143846606456399449033186160554878002671428613111806443504867738858766142050504887335990409088441824104338753030405625930185

# Set up the stack and the heap. The first three instructions are not
# particularly useful; they're just there to skip past the newlines in
# the Perl code. (Though the initial zero on the stack does get used
# at the very end.)

        push    0
        push    0
        jneg    wsout

        push    WSCODE
        push    PERLCODE
        dup
        dup
        push    0
        copy    1

# Output the first four lines of the file.

perl:   dup
        mod     122
        putchar
        div     122
        dup
        jnzero  perl
        pop
        jzero   perl
        push    68              # represents "jneg wsout"
        call    wsout

# Output the rest of the file.

        copy    1
        call    pushout
        push    2
        call    wsout
        call    pushout
        call    wsout
        putnum
        push    2
        call    wsout
        exit

# pushout: Output a Whitespace push instruction, using the number on
# the top of the stack as the instruction's argument. (Recursion is
# used to output the bits MSB-first.)

pushout:
        push    0
        dup
        call    wsout
        call    wsout
bits:   dup
        jzero   bitend
        dup
        mod     2
        swap
        div     2
        call    bits
bitend: call    wsout
        ret

# wsout: Output a sequence of whitespace characters as represented by
# the number on the top of the stack. The number is read in base 3,
# LSB-first, with 0 = SPC, 1 = TAB, 2 = NL. Calling wsout with a value
# of zero will output a single space.

wsout:
        dup
        mod     3
        mul     -23             # some ugly math that transforms
        mod     -24             # (0, 1, 2) into (32, 9, 10)
        add     32
        putchar
        div     3
        dup
        jnzero  wsout
        pop
        ret

শীর্ষে থাকা জায়ান্ট সংখ্যাগুলি হ'ল প্রকৃত স্ট্রিংয়ের পরিবর্তে আমাদের হোয়াইটস্পেস ব্যবহারকারীদের কী ব্যবহার করতে হয়। এটিকে কোনও হোয়াইটস্পেস ইন্টারপ্রেটারে চালানোর চেষ্টা করতে বিরক্ত করবেন না যার যথাযথ বিগনাম সমর্থন নেই।

শেষ অবধি, আবার প্রোগ্রামটি এখানে, তবে এবার সি-স্টাইলের সাথে পালাতে হবে, কারণ এটি বিশেষভাবে অনুরোধ করা হয়েছিল:

say<< x2;say<<0,0  \nsay<< x2;say<<0,0  \n\n\t\t\n   \t\t  \t  \t \t\t  \t  \t\t \t \t \t\t\t\t\t  \t\t \t\t\t \t\t\t\t\t \t \t \t\t \t \t   \t\t\t\t\t   \t\t  \t \t\t \t \t\t \t    \t\t\t\t \t  \t \t\t \t    \t \t\t   \t      \t\t\t \t\t\t\t\t \t\t\t \t\t\t\t     \t\t\t \t      \t\t\t\t\t      \t\t   \t\t    \t\t\t\t\t\t\t\t  \t \t \t   \t\t\t   \t\t\t\t\t  \t\t\t\t \t    \t \t\t\t\t\t \t     \t  \t \t      \t    \t     \t\t   \t\t\t \t \t\t\t\t\t\t \t\t \t \t       \t\t  \t           \t\t   \t \t\t\t \t     \t\t\t\t\t\t \t    \t\t\t\t \t\t\t\t  \t\t\t   \t\t\t \t  \t   \t\t\t\t  \t\t \t\t\t   \t\t\t \t\t\t \t\t\t  \t\t \t  \t \t\t\t \t \t \t\t     \t \t \t  \t  \t \t\t     \t \t    \t\t\t\t  \t \t\t \t \t\t \t  \t \t \t\t \t\t \t\t \t\t\t \t\t\t    \t\t\t  \t  \t\n   \t     \t\t\t\t\t \t\t \t \t \t \t  \t\t\t   \t   \t    \t\t \t         \t   \t\t\t\t \t\t    \t\t \t \t  \t\t\t \t\t\t\t \t\t\t   \t    \t \t \t\t\t  \t\t\t\t \t \t\t \t \t \t\t\t\t \t  \t \t\t \t   \t\n \n  \n    \n \t  \t\n\n  \t\n \n    \t\t\t\t \t \n\t \t\t\t\n     \t\t\t\t \t \n\t \t  \n   \t\t\n\t  \n\n\t\t\t\n \n\n\n\t \t\n   \t   \t  \n\n \t\n \t  \t\n\n \t \n   \t \n\n \t\n\n \t \n\n \t\n\t\n \t   \t \n\n \t\n\n\n\n\n   \n   \n \n \n \t\n\n \t\n\n    \n \n \n\t \n \n    \t \n\t \t\t \n\t   \t \n\t \t \n \t  \n\n  \n \n    \t\t\n\t \t\t  \t\t \t\t\t\n\t  \n  \t\t\t   \n\t \t\t   \t     \n\t   \t\n     \t\t\n\t \t  \n   \t\t\n\t  \n\n\t\t\n \n\n\n\t\n0\n

2
কি দারুন! আমি ভেবেছিলাম ব্রেইনফাকই হবে প্রথম সমাধান।
বুথবি

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