আসুন ওকারিনা খেলি


42

যেমনটি আমরা সবাই জানি, জেলদা সিরিজটি এখন পর্যন্ত তৈরি সেরা গেমের একটি। এর সম্মানে, আসুন আমরা ওকারিনার উপর কয়েকটি গান বাজাতে পারি।

চ্যালেঞ্জ:

একটি প্রোগ্রাম লিখুন যা একটি গান দেওয়া হয়েছে, সেই নির্দিষ্ট গানের জন্য স্কোরকে ছাড়িয়ে যাবে।

ইনপুট:

আপনাকে যে গানটির স্কোর আউটপুট করতে হবে তা নীচের মত দেখতে একটি অনন্য তিনটি চরিত্রের সংমিশ্রণ দ্বারা দেওয়া হবে:

zel - Zelda's Lullaby
sas - Saria's Song
eps - Epona's Song
sos - Sun's Song
sot - Song of Time
sst - Song of Storms

বোনাস গান, প্রতিটি -7%:

mof - Minuet of Forest
bof - Bolero of Fire
sow - Serenade of Water
nos - Nocturne of Shadow
ros - Requiem of Spirit
pol - Prelude of Light

বোনাস গান 2, -8%:

scs - Scarecrow's song 

যেমনটি আমরা সবাই জানি, স্কেরক্রোর গানটি এমন একটি গান যা আপনি নিজেকে রচনা করেছেন। এই গানের আটটি নোট থাকা দরকার। আপনি নিজের রচনা এমন স্কোর আউটপুট করুন যা অন্যান্য স্কোর থেকে আলাদা।

আপনি যদি সমস্ত গান অন্তর্ভুক্ত করার সিদ্ধান্ত নেন তবে এটি আপনার বাইট স্কোরের মোট -50% বোনাস হবে।

আউটপুট:

আউটপুট নোটগুলি নিম্নলিখিত অক্ষর দ্বারা প্রতীকী:

^
<
>
V
A

নিম্নলিখিত বিন্যাসে একটি স্কোর আউটপুট:

-^-^-^-^-^-^-^-^-
-<-<-<-<-<-<-<-<-
->->->->->->->->-
-V-V-V-V-V-V-V-V-
-A-A-A-A-A-A-A-A-

প্রতি কলামে কেবল একটি নোট অনুমোদিত। সরলতার জন্য আমি মূল চারটি সারিটিতে আরও একটি সারি যুক্ত করেছি।

প্রতিটি নোট একটি পৃথক সারির সাথে মিলে যায়:

^: ----------------
<: ----------------
>: ----------------
V: ----------------
A: ----------------

আউটপুট stdout লিখিত হবে। চলমান নিউলাইনগুলি অনুমোদিত are

উদাহরণ:

ইনপুট (জেল্ডার লুলিবি):

zel

আউটপুট:

---^-----^-------
-<-----<---------
----->----->-----
-----------------
-----------------

ইনপুট (আগুনের বোলেরো):

bof

আউটপুট:

-----------------
-----------------
--------->--->---
-V---V-----V---V-
---A---A---------

নোট ঠকানো শীট:

zel
<^><^>
sas
V><V><
eps
^<>^<>
sos
>V^>V^
sot
>AV>AV
sst
AV^AV^
mof
A^<><>
bof
VAVA>V>V
sow
AV>><
nos
<>>A<>V
ros
AVA>VA
pol
^>^><^

যেহেতু আমরা ওকারিনা কোড গল্ফ খেলি , তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জয়ী!

গানের উল্লেখ:

http://www.thonky.com/ocarina-of-time/ocarina-songs

http://www.zeldadungeon.net/Zelda05-ocarina-of-time-ocarina-songs.php


4
সম্ভবত আপনার বাইট বোনাসের চেয়ে% বোনাস ব্যবহার করা উচিত। এইগুলির কোনও গানের <7 বাইটে এনকোড করা কার্যত অসম্ভব, সুতরাং বোনাসগুলির মধ্যে বর্তমানে কোনওটির জন্য এটি উপযুক্ত হবে না। আপনার আরও উল্লেখ করা উচিত যে স্কেরক্রো গানটি 8 টি আসল নোটের সমন্বিত হওয়া উচিত; অন্যথায় কেউ খালি স্কোর মুদ্রণ করতে পারে। তবে তা ছাড়াও, চমৎকার চ্যালেঞ্জ!
ETH প্রোডাকশনস

9
এই প্রশ্নটি পড়ে আমার মাথায় এই গানগুলি শুনতে পারা যায় তা আমি আমার জীবন নিয়ে কী করছি তা অবাক করে দেয়। আমার অর্থ, আমি যখন কাজের পরে ওওটি খেলতে পারি তখন আমি কর্মক্ষেত্রে ...
মাইক দ্য লাইয়ার

11
আমি আশা করি এটি কোনও বিদ্যমান উত্তর অকার্যকর করে দেয় না তবে নোট করুন যে মূল জেল্ডায় স্কেরেক্রোর গানটি অবশ্যই দুটি পৃথক নোটের সমন্বয়ে তৈরি করা উচিত , সুতরাং উদাহরণস্বরূপ এএএএএএএএএ একটি বৈধ স্কেরক্রোর গান হবে না
জানুয়ারী

4
আমি মনে করি ছোট হাতের vচেয়ে ভাল দেখতে হবে।
mbomb007

3
আমি সত্যিই অপেক্ষা করতে আছি যে কেউ এই সমস্যাটি ভেল্টো বা ফিউগুতে সমাধান করে ওকারায়নে এটি খেলতে পারে
user902383

উত্তর:


8

পাইথ, 56.5 (113 বাইট - 6 × 7% - 8%)

VtJ" ^<>VA"+K\-sm+?qNdNKK@LJj@jC"þØí§V^G¤×¹z1«bëë¶ñRõr¤çM"1391423xcs@LGjC"cc0Á:xqç÷\rS  Íó׺:9"lG3z6

এতে xxdঅপ্রিন্টযোগ্য অক্ষর রয়েছে, সুতরাং এখানে একটি বিপরীত হেক্সডাম্প রয়েছে:

0000000: 5674 4a22 205e 3c3e 5641 222b 4b5c 2d73  VtJ" ^<>VA"+K\-s
0000010: 6d2b 3f71 4e64 4e4b 4b40 4c4a 6a40 6a43  m+?qNdNKK@LJj@jC
0000020: 2207 fe85 d880 ed0e a756 5e47 8ba4 d7b9  "........V^G....
0000030: 7a9e 0531 ab1b 62eb ebb6 f112 52f5 72a4  z..1..b.....R.r.
0000040: e74d 2231 3339 3134 3233 7863 7340 4c47  .M"1391423xcs@LG
0000050: 6a43 229a 6317 6330 c13a 9278 71e7 10f7  jC".c.c0.:.xq...
0000060: 5c72 5309 87cd f3d7 ba3a 3922 6c47 337a  \rS......:9"lG3z
0000070: 36                                       6

আপনি এটি অনলাইনেও দেখতে পারেন ।

ব্যাখ্যা

আমি গানগুলি বেস -6 সংখ্যায় সঞ্চয় করি, 1391323 বেসে পুনরায় এনকোড করেছি এবং পরে স্থান বাঁচাতে 256 বেস করছি base কয়েকটি গান শুরু হওয়ার সাথে আমার বেস 6 বেছে নিতে হয়েছিল এবং ^ডিকোডিংয়ের পরে সংখ্যাগুলি 0 দিয়ে শুরু করতে পারে না।

  J" ^<>VA"                                                      save characters in J
 t                                                               discard the space
V                                                                loop over all characters
                               C"..."                            parse base256 string (songs) to int
                              j      1391423                     convert to base 1391423 (separate songs)
                                                   C"..."        parse base256 string (codes) to int
                                                  j      lG      convert to base-26
                                               @LG               replace indices by corresponding letters
                                              s                  concatenate
                                             c             3     chop to 3-character codes
                                            x               z    find index of input code
                             @                                   get correct song
                            j                                6   convert to base 6
                         @LJ                                     replace indices by corresponding ^<>VA
                m                                                map d over the above
                  ?qNdNK                                         take the current character if at its row,
                                                                 otherwise a dash
                 +      K                                        add a dash
               s                                                 concatenate
           +K\-                                                  add a dash and print

44

ফানসিটন , 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।
    • যদি খালি থাকে, আমরা করা হয়।

ভাল, এটি চিত্তাকর্ষক!
সুইপারপোটো

6
<নালিশ> যে Dang বাদ্যযন্ত্র ফ্ল্যাট ... monospacing বন্ধ নিক্ষেপ ... </ নালিশ>
টেলর লোপেজ

1
@ iAmMortos: সম্মত। এই কারণে, আমি দীর্ঘ সময়ের জন্য ♭ চরিত্রটি এড়িয়ে গিয়ে নিজেকে দৃ convinced়প্রত্যয় দিয়েছিলাম যে আমি কেবল বিটওয়াইস-না, তখন ♯, তারপরে বিটওয়াইস-না could তবে এখন ফানসিটন সম্পাদনা করার জন্য আমি দেজা ভু সানস মনো ব্যবহার করি এবং এটিতে ♭ রয়েছে ♭ সুতরাং এখন আমাদের যা দরকার তা হল স্ট্যাক এক্সচেঞ্জেরও কোডের জন্য সেই ফন্টে স্যুইচ করা ;-)
টিমভি

4
এছাড়াও, অবশ্যই আপনাকে অবশ্যই স্বীকার করতে হবে যে হ্রাস এবং বৃদ্ধির জন্য ♭ এবং than এর চেয়ে বেশি উপযুক্ত কোনও ইউনিকোডের চরিত্র নেই ♯ তারা ঠিক নিখুঁত
টিমভি

হাহাহা, পুরোপুরি। আমি ফাংশন সম্পর্কে কিছুই জানি না, তবে এটি মোটামুটি বোঝায়!
টেলর লোপেজ

11

পাইথন 2, 143.5 (287 বাইট - 50%)

i='^<>VA'
u=dict(zel="<^>"*2,sas="V><"*2,eps="^<>"*2,sos=">V^"*2,sot=">AV"*2,sst="AV^"*2,mof="A^<><>",bof="VAVA>V>V",sow="AV>><",nos="<>>A<>V",ros="AVA>VA",pol="^>^><^",scs="<"*8)[raw_input()]
r=[17*['-']for _ in[1]*5]
x=0
for g in u:r[i.find(g)][x*2+1]=g;x+=1
for h in r:print''.join(h)

গ্রিড ড্যাশগুলি দিয়ে উত্পন্ন হয়; তারপরে সূচিযুক্ত এবং নোটগুলি সহ প্রতিস্থাপন করা হবে।


এটি খুব বেশি লক্ষ্য করা যায়নি তবে আপনি jপ্রতিটি কমা প্রতিস্থাপন করে একটি স্থান দিয়ে এবং splitকোনও যুক্তি ছাড়াই কল করে ঘোষণাপত্রে বাইটগুলি সংরক্ষণ করতে পারেন
আন্ডারগ্রাউন্ডোমোরিয়েল

আমি মনে করি না যে আপনার এটি করার দরকার ছিল, এটি এখনও আপনার অ্যালগরিদম তাই আমি মনে করি আপনি এই প্রতিনিধিটির প্রাপ্য, তবে যাইহোক আমি মুক্তি থেকে পরিচালিত হয়েছি range। দুঃখজনকভাবে আপনি কেবল মাত্র 5 টি দিয়ে অভ্যন্তরীণ তালিকাটিকে গুণতে পারবেন না কারণ এগুলি সমস্ত একই বস্তু এবং একটি পরিবর্তন অন্যকে পরিবর্তন করে: / যদিও আমরা পার্লকে (এখনও জন্য) বীট করি!
FryAmTheEggman

আপনি "<^><^>"=> এর মতো স্টাফ করে 6 বাইট (প্রথম ছয়টির প্রতিটি গানের জন্য 1) মুছে ফেলতে পারেন নি "<^>"*2?
এল'েন্ডিয়া স্টারম্যান

scs="<"*8 আমি আপনার স্কেরক্রো গান পছন্দ করি না।
কেসি কুবাল

যখন আমি এটি চালানোর চেষ্টা করি তখন এটি কেবল লাইনের 2 এ থামে এবং কখনই শেষ হয় না।
Cory Klein

7

পার্ল 5, 125 ( 320 260 250 বাইট -6x7% বোনাস গান -8% স্কেরক্রো গান)

হ্যাঁ, শেষ পর্যন্ত সেই পার্লিশ হ্যাশ সিনট্যাক্স নিয়ে পরীক্ষা করার সুযোগ।

$_=pop;@B={qw(zel <^><^> sas V><V>< eps ^<>^<> sos >V^>V^ sot >AV>AV sst AV^AV^ mof A^<><> bof VAVA>V>V sow AV>>< nos <>>A<>V ros AVA>VA pol ^>^><^ scs <^V>>V^<)}->{$_}=~/./g;map{@L=('-')x17;for$i(0..@B){$L[1+2*$i]=$_,if$B[$i]eq$_}say@L}qw(^ < > V A)

পরীক্ষা

$ perl -M5.010 ocarina.pl scs
---^---------^---
-<-------------<-
------->->-------
-----V-----V-----
-----------------

1
ব্যবহার করুন qw()চর্বি কমার পরিবর্তে সিনট্যাক্স ( %h=qw(zel <^><^> sas >'V><' ...)কিছু বাইট সংরক্ষণ করতে
ভিড়

1
@ মোব এই পরামর্শটি কেবল "কিছু" বাইটের চেয়ে বেশি শেভ করেছেন। :) ধন্যবাদ!
LukStorms

1
@Lআরও সাবলীলভাবে লেখা যেতে পারে @L=('-')x17। এছাড়াও, প্রধান হ্যাশ হিসাবে বেনামে রাখা যেতে পারে @B={qw(zel <^><^> ... scs <^V>>V^<)}->{$_}=~/./g
primo

1
আমি দেখছি, এগুলি সামান্য ভার্বোজ বিভক্ত ফাংশন এড়াতে দুর্দান্ত কৌশল। আরও দশটি বাইট শূন্যস্থানতে উত্সর্গ করা হয়েছিল। টিমস আপ
লুকস্টর্মস

5

পার্ল, 75 (150 বাইট - 50%)

#!perl -nl
$i=vec~$_,0,32;print+qw(- - ^ < > V A)[0,map{vec('w2$$W4F4w7DeweTFwR$Ew$C2wVdeVe3cw4B#EEVVwC5Tw44bwR&e',$i/480%15*8-$_,4)==$.&&$.,0}1..8]while$.++<6

শেবাংকে 2 হিসাবে গণনা করা, স্টিডিনের কাছ থেকে ইনপুট নেওয়া হয়।

নমুনা ব্যবহার

$ echo zel | perl zelda.pl
---^-----^-------
-<-----<---------
----->----->-----
-----------------
-----------------

$ echo bof | perl zelda.pl
-----------------
-----------------
--------->--->---
-V---V-----V---V-
---A---A---------

$ echo scs | perl zelda.pl
-----------------
---<-<-<---------
-----------------
-----------V-V---
-A-------A-----A-

1
এর জন্য বিটশিটিং ভ্যাক ফাংশনটি ব্যবহার করছেন? অ্যামেজিং।
LukStorms

@ লুক্সটর্মস আমি আশা করি এটি কেবলমাত্র 2% এর শক্তির চেয়ে 3 বিট করতে পারে
প্রিমো

4

হাস্কেল, 344 - 50% = 172 বাইট

import Data.List
s"zel"=82
s"sas"=69
s"eps"=86
s"sos"=48
s"sot"=128
s"sst"=50
z"mof"=11055
z"bof"=373854
z"sow"=1720
z"nos"=73217
z"ros"= -12730
z"pol"=4791
z"scs"=304236
z n=s n*126
p n|n*n== -n="   "|0<1="A^<>V"!!(n`mod`5):p(n`div`5)
o=putStr.unlines.transpose.(l:).concatMap(\c->[map(e c)"^<>VA",l]).take 8.p.z
e c d|c==d=c|0<1='-'
l="-----"

o কাজ করে

ভেবেছিলাম এই এনকোডিংগুলি ব্যবহার করে আমি পাইথনকে পরাস্ত করতে পারি (আমাকে দীর্ঘ সময় লাগল _ তারা সত্যিই এখনও অনেকগুলি বাইট সংরক্ষণ করে না। কোনও পরামর্শ?

হ্যাঁ, এটি এনকোডিংয়ের সামনে একটি বিয়োগ "ros"। হ'ল কারণ এর 'শীট' অক্ষরটি 0আমার বেস -5 এর সাথে শেষ হওয়ার সাথে শেষ হয়েছে কারণ এই নেতিবাচক কৌশলটি এনকোডযুক্ত যা দ্বিগুণ করে এনকোড করা 'সহজ গানের' জন্য কাজ করবে না s। আপনি যদি ব্যবহার না করেন quotতবে তবে আপনি p (-1)বিশেষভাবে পরিচালনা করতে পারবেন না quot (-5) = 0, তাই নেতিবাচকতাটি নষ্ট হয়ে যায়। যাই হোক.


4

পিএইচপি: 130 বাইট (260 270 279 বাইট - 6 × 7% - 8%)

আরও বাইট সংরক্ষণের জন্য দুর্দান্ত কিছু ধারণার জন্য ইসমাইল মিগুয়েল এবং ব্ল্যাকহোলকে ধন্যবাদ!

<?php $f=str_split;for($z='*^<>VA';++$i<6;print"-
")foreach($f(base_convert(substr(current(preg_grep("/^$argv[1]/",$f(bofttmmeps8jf0mofvff0nosfnfopol99d0rosyxt0sasrgk0scs8m8msosm9p0sotnry0sowylc0sstybp0zeldk90,7))),-4),36,6),1)as$c)echo$i-$c?'--':'-'.$z[$c-0];

এর পরে print"-, এটি একটি গাড়ীর ফেরতের আক্ষরিক সন্নিবেশ। এটি উইন্ডোজে দুটি বাইটে অনুবাদ করতে পারে।

Scarecrow এর গান সহ সমস্ত বোনাসের গান অন্তর্ভুক্ত করা হয়েছে।

প্রতিটি গান কোডের সাতটি বাইটে উপস্থাপিত হয়। আমি নতুন স্কোরিং পছন্দ করি কারণ পুরানো স্কোরিংয়ের সাথে আমি সামগ্রিকভাবে একটি মাত্র মাইনাস বোনাস পয়েন্ট অর্জন করতে পারতাম!

সাম্প্রতিক সম্পাদনাগুলি পিএইচপিকে প্রচুর সতর্কবার্তা তৈরি করে, যাতে জিনিসগুলি সুন্দর এবং পরিচ্ছন্ন রাখার জন্য সেগুলিতে রূপান্তরিত হয় /dev/null

সংরক্ষণ zelda.phpকরুন এবং কমান্ড লাইনে চালান:

$ php zelda.php zel 2> /dev/null
---^-----^-------                                                                                                                                   
-<-----<---------                                                                                                                                   
----->----->-----                                                                                                                                   
-----------------                                                                                                                                   
-----------------

$ php zelda.php bof 2> /dev/null                                                                                                                            
-----------------                                                                                                                                   
-----------------                                                                                                                                   
--------->--->---                                                                                                                                   
-V---V-----V---V-                                                                                                                                   
---A---A--------- 

$ php zelda.php scs 2> /dev/null                                                                                                                          
-^-------^-------                                                                                                                                   
---<-------<-----                                                                                                                                   
----->------->---                                                                                                                                   
-------V-------V-                                                                                                                                   
-----------------

আপনি কি "হিসাবে সংরক্ষণ করুন" বলতে চাইছেন main.php?
জ্যাচ গেটস

@ জ্যাচগেটস - পরিবর্তনগুলি করার জন্য এটি ধন্যবাদ।

আপনি প্রয়োজন হবে না ()প্রায় ($i-$c)উপর echo($i-$c)?'--':'-'.$z[$c-0];। এছাড়াও, আপনার ভিতরে থাকা স্ট্রিংটি splitব্যবহার করা যেতে পারে '। এবং '/^'.$argv[1].'/'এই হিসাবে লেখা যেতে পারে"/^$argv[1]/"
ইসমাইল মিগুয়েল

1
ধন্যবাদ! আমি মনে করি সিজিএসইতে আউটপুট পরিষ্কার করার জন্য / ডিভ / নালকে সতর্কতাগুলি পাইপ করার অনুমতি দেওয়া হয়েছে?

@ ব্ল্যাকহোল - আপনাকে ধন্যবাদ! এটি পার্ল 5 জমা দেওয়ার সাথে বেঁধে দেওয়া হয়েছে, বেশ ভাল করছেন ...

4

পাইথন 3 - 138.5 ( 292 280 277 বাইট - 50%)

প্রতিস্থাপন পদ্ধতির চেয়ে প্রিন্ট-এ-ইউ-গো পদ্ধতিটি করার সময় বর্তমান পাইথন নেতার কাছ থেকে কয়েক বাইট শেভ করে।

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

s=dict(zel="<^><^>",sas="V><V><",eps="^<>^<>",sos=">V^>V^",sot=">AV>AV",sst="AV^AV^",mof="A^<><>",bof="VAVA>V>V",sow="AV>><",nos="<>>A<>V",ros="AVA>VA",pol="^>^><^",scs="AV><^AV>")[input()]
s+=" "*8
for c in "^<>VA":
 o="-"
 for x in range(8):o+=["--",c+"-"][s[x]==c]
 print(o)

চালান:

> python3 loz.py
bof [return]

আউটপুট:

-----------------
-----------------
--------->--->---
-V---V-----V---V-
---A---A---------

আপনি ['--',c+'-'][s[x]==c]শর্তযুক্ত পরিবর্তে কয়েকটি বাইট সংরক্ষণ করতে পারবেন
রুথ ফ্র্যাঙ্কলিন

ওহ, শুভ কল, আপনাকে ধন্যবাদ!
টেলর লোপেজ

3

রুবি, রেভ 1, 192 - 50% = 96

গল্ফিং অন্তর্ভুক্ত:

ম্যাজিক স্ট্রিংয়ের অক্ষরের গোষ্ঠীর মধ্যে শ্বেতস্পেস অপসারণ (এবং লাইনের শেষে ডিনোমিনেটরের সংশোধন /4।) অন্য কিছু অপ্রয়োজনীয় সাদা স্থান অপসারণ।

পালানোর ক্রমগুলি একক অক্ষরে রূপান্তর (স্ট্যাক এক্সচেঞ্জ এগুলি প্রদর্শিত হবে না, তাই আমি ?একটি স্থানধারক হিসাবে রেখেছি )

gof টির -পাঁচটি স্ট্রিংয়ের একটি অ্যারের পরিবর্তে নিউলাইনগুলি অনুসরণ করে একটি স্ট্রিং হিসাবে পুনঃনির্ধারণ-

s=gets.chop
s[?s<=>s[0]]=''
n=("owEkrswuns=;gcsbfbYuze33as&&es77os??otaast??mf?9pl
?"=~/#{s}/)/4
g=(?-*17+'
')*5
(n<4? n+5:6).times{|i|x=$'[i/3].ord/5**(i%3)%5;g[x*18+i*2+1]='^<>VA'[x]}
puts g

রুবি, রেভ 0, 223 - 50% = 111.5 (অবরুদ্ধ)

ইনপুট কোডটি 2 টি অক্ষরে হ্রাস করা হয়েছে। এটি একটি দিয়ে শুরু হয়, তাহলে s, sমুছে ফেলা হয়, যদি একটি পত্র দিয়ে শুরু হয় s(শুধুমাত্র প্রযোজ্য zelশেষ চিঠি মুছে ফেলা হয়, এবং যদি এটা একটা চিঠি দিয়ে শুরু হয় আগে sমধ্যম চিঠি মুছে ফেলা হয়।

ম্যাজিক স্ট্রিং (যা বর্ণহীন সংস্করণে স্বচ্ছতার জন্য ফাঁকা স্থান রয়েছে) তে 2-বর্ণের কোডগুলি মিউজিক ডেটা অনুসরণ করে। এটি ম্যাচ অপারেটর ব্যবহার করে অনুসন্ধান করা হয় =~যা স্ট্রিংয়ের অবস্থানটি দেয়।

5, 7 এবং 8 টি নোটের প্রতিটি ঠিক একটি গান রয়েছে (প্লাস স্কাসে এছাড়াও 8 টি নোট রয়েছে)) এগুলি পাশাপাশি একটি যথেচ্ছ 6 নোটের গানের rosসাথে ম্যাজিক স্ট্রিংয়ের শুরুতে বান্ডিল করা হয় যাতে nপ্রদত্ত মানটি স্ট্রিংয়ের অবস্থানটি খেলতে নোটের সংখ্যা গণনা করতে ব্যবহার করা যেতে পারে। csআগে সংকুচিত হয় bfএবং সংক্ষিপ্তকরণের সাথে যখন সংখ্যাটি nবৃত্তাকার হয় তখন আমরা দুজনের জন্য সঠিক গণনাটি সরিয়ে চলে যাই। চতুর্থ ক্লাস্টারের পরে, সমস্ত গানে 6 টি নোট রয়েছে তাই nবড় হলে নোটের সংখ্যা 6 টি একটি ডিফল্ট হয়ে যায়।

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

নোটগুলি প্রাসঙ্গিক 2-বর্ণের গানের কোডের ঠিক পরে ম্যাজিক স্ট্রিংয়ে একবারে 3 টি এনকোড করা হয়। এগুলি বিভাগ দ্বারা উত্তোলন করা হয় 5**(i%3)এবং এর সাথে একটি চরিত্র gআপডেট করা হয়। প্রোগ্রাম শেষে gমুদ্রিত হয়।

s=gets.chop
s[?s<=>s[0]]=''
n=("owEk rswu ns=;g csbfbYu ze33 as&& es77 os\21\21 otaa st\23\23 mf\35\71 pl\n\a"=~/#{s}/)/5

g=(0..4).map{'-'*17}
(n<4? n+5 : 6).times{|i|x=$'[i/3].ord/5**(i%3)%5;g[x][i*2+1]='^<>VA'[x]}
puts g

2

পাইথন 2, 141.5 বাইট -50% (283 বাইট)

s='D  2)AE0*  A2)D  AD )2 A  )D2A 0,"!A D2) A  (2EA"4H !A )2D A 1F`(A)2D  A  p\xc5*'.split("A")['sst pol zel sos sot sow sas ros mof scs nos eps bof'.split().index(raw_input())]
for c,n in zip(s,"^<>VA"):print"-".join([("-"+n)[i>"0"]for i in bin((ord(c)-32)%255)[2:].zfill(8)][::-1])

প্রতিটি লাইন 8 টি নোট দীর্ঘ হিসাবে প্রতিটি নোট বাইট হিসাবে সংরক্ষণ করুন। বাইনারি উপস্থাপনের কথা স্মরণ করে এবং তারপরে ডান অক্ষরের সাথে প্রতিস্থাপন করে।


1

লুয়া, 249 বাইট - 50% = 124.5

w=io.write for j=1,5 do n={sst=41881,pol=44915,zel=30814,sos=42315,sot=17577,sow=5953,sas=35588,ros=11065,mof=29335,nos=122170,eps=29729,bof=719576,scs=999999}[...]for i=1,8 do d=n%6 n=(n-d)/6 c=d==6-j and'AV><^':sub(d,d)or'-'w('-',c)end w('-\n')end

খুব সহজ, সবেমাত্র বেস -6 নম্বর হিসাবে এনকোড করা সংগীতগুলি পড়ে।

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