ফানসিটন , 4322 - 50% = 2161
সত্যিই এখানে গল্ফ চেষ্টা করা হয় না। সৌন্দর্যের কোণে আরও যাচ্ছেন। আমি মনে করি যে মূল প্রোগ্রামটি খুব ঝরঝরে দেখাচ্ছে, একটি নিখুঁত আয়তক্ষেত্রাকার বাক্স ডানদিকে টাক দেওয়া।
সর্বদা হিসাবে, আপনি $('pre').css('line-height',1)
আপনার ব্রাউজার কনসোলে চালিয়ে আরও ভাল রেন্ডারিং পেতে পারেন ।
┌─────────────────────────┐
┌─┴─╖ ┌─┴─╖
┌────────┤ · ╟─────────────────────┤ · ╟─────────────┐ ╔═════════╗ ╔════╗ ╔════╗
│ ╘═╤═╝ ╔═════════╗ ╘═╤═╝ ╓───╖ │ ║ 1257283 ║ ┌─╢ 40 ║ ║ 25 ║
│ │ ║ 2097151 ║ ├───╢ ʫ ╟───┐ │ ║ 6456094 ║ │ ╚════╝ ╚══╤═╝
┌─┴─╖ │ ╚════╤════╝ ┌─┴─╖ ╙─┬─╜ ┌─┴─╖ │ ║ 8219021 ║ │ ┌───╖ ┌─┴─╖
┌───┤ · ╟────────┴────┐ └─────┬────┤ · ╟───┴───┤ · ╟─┤ ║ 4660190 ║ └──┤ × ╟───┤ % ║
│ ╘═╤═╝ │ ┌┴┐ ╘═╤═╝ ╘═╤═╝ │ ╚════════╤╝ ╘═╤═╝ ╘═╤═╝
│ │ │ └┬┘ │ │ │ ╔═══╗ ┌─┴─╖ ┌──┴─╖ ╔═╧═╗
│ │ ╔═══╗ ┌────╖ │ ┌─┴─╖ ┌┐ │ │ │ ║ 8 ╟──┤ ʫ ╟──┤ >> ║ ║ ║
│ │ ║ 1 ╟─┤ >> ╟─┘ ┌───┤ ? ╟─┤├─┤ │ │ ╚═══╝ ╘═╤═╝ ╘══╤═╝ ╚═══╝
│ │ ╚═══╝ ╘══╤═╝ │ ╘═╤═╝ └┘ │ │ │ ╔════════════════╧═════════╗
│ │ ┌─┴─╖ ┌───╖ ┌─┴─╖ ┌─┴─╖ ╔═╧═╗ │ │ ║ 609678112368778425678534 ║
│ ┌─┴─────────┤ ʫ ╟─┤ ‼ ╟─┤ · ╟─┤ ‼ ║ ║ 1 ║ │ │ ║ 616189712722605554111376 ║
│ │ ╘═╤═╝ ╘═╤═╝ ╘═╤═╝ ╘═╤═╝ ╚═══╝ │ │ ║ 461573643915077926310571 ║
│ │ │ │ │ ╔═╧══╗ │ │ ║ 355541007599150245813976 ║
│ │ ╔══════╗ │ │ └───╢ 45 ║ │ │ ║ 426564826002362964111793 ║
│ │ ║ 2097 ║ │ ┌─┴─╖ ┌───╖ ╚════╝ │ │ ║ 714054902293682079346275 ║
│ │ ║ 1565 ║ └───┤ · ╟─┤ ♭ ╟─┐ │ │ ║ 663973372550500581508544 ║
│ │ ╚═╤════╝ ╘═╤═╝ ╘═══╝ ├────────────────────┘ │ ║ 874263187322344354338195 ║
│ │ ┌─┴─╖ ┌─┴─╖ │ │ ║ 642609790172899326178321 ║
│ │ │ ‼ ╟─────────┤ ? ╟───────┘ │ ║ 071643306454414932126243 ║
│ │ ╘═╤═╝ ╘═╤═╝ │ ║ 308860823981077902637848 ║
│ ┌─┴─╖ ┌─┴─╖ ╔═══╗ ┌─┴─╖ │ ║ 322657399386789617074176 ║
└─┤ · ╟─┤ ʫ ╟─╢ 8 ║ ┌─┤ ? ╟────────────────────────────────┘ ╚══════════════════════════╝
╘═╤═╝ ╘═╤═╝ ╚═══╝ │ ╘═╤═╝
│ ┌───┴╖ ╔════╗ │ ╔═══╗
└─┤ >> ╟─╢ 21 ║ └─╢ 0 ║
╘════╝ ╚════╝ ╚═══╝
একক, অদ্ভুত, খুব কম ব্যবহৃত ইউনিকোড চরিত্রের সমন্বয়ে ফানসিটনের ফাংশন নাম দেওয়ার traditionতিহ্য অব্যাহত রেখে আমি এই চ্যালেঞ্জটিকে সর্বোত্তমভাবে উপস্থাপন করতে পারে কি তা সম্পর্কে ভেবেছিলাম, এবং আমার কাছে ঘটেছিল যে লিঙ্ক এবং জেলদা (বা আপনি যদি চান, কিংবদন্তি ) জেলদা ) আপনাকে এলজেড দেয় , তাই লোয়ার-কেস ডিগ্রাফ U (U + 02AB, ʟᴀᴛɪɴ sᴍᴀʟʟ ʟᴇᴛᴛᴇʀ ʟᴢ ᴅɪɢʀᴀᴘʜ) উপযুক্ত মনে হয়।
ব্যাখ্যা
Esolangs নিবন্ধে যেমন ব্যাখ্যা করা হয়েছে, ফানসিটন প্রোগ্রামটি "ইউটিএফ -21" বলি, তবে একক স্বতন্ত্র পূর্ণসংখ্যার হিসাবে এনকোডযুক্ত ইনপুটটি গ্রহণ করে। যদি আমি এই সংখ্যাটি হ্যাশম্যাপের (মূল অভিধান, এসোসিয়েটিভ অ্যারে) কী হিসাবে ব্যবহার করতে চাইতাম তবে আমার একটি হ্যাশ ফাংশন প্রয়োজন যা দুটি মানদণ্ড পূরণ করে: একটি, এটি ফানসিটনে কার্যকর করার পক্ষে যথেষ্ট সহজ এবং দুটি, প্রত্যাশিত 13 টির মতো ইনপুট স্ট্রিং একটি ভিন্ন হ্যাশ মান দেয়। সবচেয়ে সহজ হ্যাশ ফাংশনটি আমি এর input % m
কিছু মূল্যের জন্য ভাবতে পারি m
। অতএব, আমি m
ক্ষুদ্রতম পূর্ণসংখ্যার কাছে না পৌঁছানো পর্যন্ত = 13, 14, 15 ইত্যাদি চেষ্টা করেছি যার জন্য সমস্ত হ্যাশ মানগুলি অনন্য। এই সংখ্যাটি 25 হয়।
হ্যাশ মানগুলি হল:
zel = 6
sas = 19
eps = 10
sos = 22
sot = 1
sst = 9
mof = 14
bof = 3
sow = 13
nos = 17
ros = 21
pol = 16
scs = 23
আমরা একটি গানের উপস্থিতি বা নোটের অনুপস্থিতি উপস্থাপন করে প্রতিটি গানকে এনকোড করি। উদাহরণস্বরূপ, Zelda এর Lullaby নিম্নলিখিত হিসাবে এনকোড করা হবে:
---^-----^------- = 01001000
-<-----<--------- = 10010000
----->----->----- = 00100100
----------------- = 00000000
----------------- = 00000000
বিটগুলি বিপরীতে রয়েছে; শীর্ষ বাম ঘরটি সর্বনিম্ন তাৎপর্যপূর্ণ বিটের মধ্যে রয়েছে। এর অর্থ প্রতিটি গান 40 বিট দীর্ঘ।
আমরা এইভাবে একটি 40 × 25 = 1000-বিট নম্বর নিয়ে এবং প্রতিটি গানের বিট প্যাটার্নটির হ্যাশ মান অনুসারে সঠিক স্থানে রেখে একটি (মাঝারিভাবে স্পার্স) হ্যাশ টেবিল তৈরি করি। প্রোগ্রামটির রাক্ষসী সংখ্যাটি হ্যাশ টেবিলটি হ'ল।
এখানে থাকা প্রতিটি সংখ্যার অর্থ কী:
45
= এর 0x2D
জন্য ইউনিকোড -
।
1257283645609482190214660190
: এটি ^<>VA
ইউটিএফ -21 এ স্ট্রিং । অন্ধকারে আমি এখানে চরিত্র অনুযায়ী 7 টি বিট ব্যবহার করতে পারতাম, সংখ্যাটি আরও সংক্ষিপ্ত করে তুলছি, তবে ইউটিএফ -21 ফানসিটনে এত গভীরভাবে deeplyতিহ্যবাহী যে এটি কেবল আমার কাছে ঘটেনি।
2097151
= 0x1FFFFF
= (1 << 21) - 1. উপরের স্ট্রিং থেকে প্রথম অক্ষর পেতে ব্যবহৃত হয়।
20971565
: এটি স্ট্রিং -\n
, যা প্রতিটি লাইনের শেষে যুক্ত হয়।
- এই সংখ্যাটি এবং পূর্ববর্তী চেহারাটি এতটা অনুরূপ দেখতে কৌতুহলী বলে মনে হতে পারে তবে আপনি যদি এটির বিষয়ে চিন্তা করেন তবে এটি
\n
হ'ল কারণ আমরা দশমিক এবং ইউনিকোডটি 10 এর জন্য ব্যবহার করি। এটি শেষ সংখ্যাটি (10 << 21) + 45।
প্রোগ্রামটি এখন নিম্নলিখিত হিসাবে এগিয়ে চলেছে:
- প্রধান প্রোগ্রামটি
ʫ
নিম্নলিখিত 3 টি পরামিতি সহ কল করে:
- বি : হ্যাশ টেবিল, ইনপুটটির হ্যাশ মান থেকে 40 বিট গুণে স্থানান্তরিত। আমরা যে গানটি আউটপুট করতে চাই তা এখন 40 কমপক্ষে উল্লেখযোগ্য বিটগুলিতে।
- গ : স্ট্রিং
^<>VA
।
- একটি : 8 নম্বর।
- প্রতিটি পুনরাবৃত্তিতে
ʫ
,
- যদি সি খালি না থাকে,
- যদি একটি শূন্য না হয়, বি এর নীচের অংশে দেখুন । আউটপুট
-
, অন্যটি অনুসরণ করে -
শূন্য বা অন্যথায় সি এর প্রথম অক্ষর হয় । এক বিট এবং হ্রাস হ্রাস করতে ডান বি এক করে শিফট করুন a ।
- যদি একটি শূন্য, আউটপুট
-\n
, তারপর থেকে প্রথম অক্ষর কেটে গ এবং সাথে অন্য লুপ শুরু একটি = 8।
- যদি গ খালি থাকে, আমরা করা হয়।