শুভ জন্মদিন, আসুন কিছু কেক দিন!


12

এটি শীঘ্রই আমার বন্ধুর জন্মদিন এবং তিনি যেহেতু একজন প্রোগ্রামার এবং এএসসিআইআই আর্ট প্রেমী, আমি ভেবেছিলাম আমি তাকে কিছু ASCII কেক তৈরি করব!

দুঃখের বিষয়, আমি তাঁর বর্তমান বয়সটি ভুলে যেতে থাকি, তাই আমি আমার এএসসিআই ওভেনের জন্য একটি প্রোগ্রাম রাখতে চাই, এটি একটি নির্দিষ্ট সংখ্যক মোমবাতি সহ একটি কেককে বেক করে তোলে, তাই আমি যদি আমার সাথে ভুল করে থাকি তবে নিজেকে আবার এটি করতে হবে না his বয়স।

এএসসিআইআই ওভেনগুলির কেবলমাত্র সীমাবদ্ধ মেমরি এবং সঞ্চয় ক্ষমতা রয়েছে তাই এটি খুব কম বাইট ব্যবহার করা উচিত ।


তোমার কাজ:

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

পিষ্টক প্রয়োজনীয়তা হ'ল:

  • এর একটি সীমানা থাকতে হবে, আনুভূমিক -এবং উল্লম্ব |লাইন এবং উল্লম্ব দ্বারা নির্মিত +
  • কমপক্ষে ৫ টি অক্ষর প্রশস্ত (কেক সীমানা সহ |)
  • কমপক্ষে ৫ টি অক্ষর উচ্চ (কেক সীমানা সহ -)
  • সেই জায়গাতে কোনও শিখা না থাকলে কেকের সীমানা এবং প্রথম মোমবাতি-বেস (শিখা নয়) এর প্রতিটি অংশের মধ্যে একটি সাদা জায়গা থাকতে হবে। একটি শিখা বা মোমবাতি-বেস কেক সীমানা ওভারল্যাপ করতে সক্ষম হবে না।
  • কেকের সর্বোচ্চ প্রস্থটি 9 টি অক্ষর, সুতরাং সারি প্রতি সর্বাধিক 5 মোমবাতি থাকে।
  • যেহেতু আমরা চাই না যে আমাদের কেকটি দ্বি-মাত্রিক হয়, তাই এটির কিছুটা ভলিউম দেওয়ার জন্য এটি অতিরিক্ত 2 সারি উঁচু হতে হবে। নীচে অন্য সীমানা যুক্ত করুন এবং উপরে ( -, |এবং +) থেকে আবার ASCII অক্ষর ব্যবহার করে উপরের অংশগুলির সাথে শীর্ষগুলি সংযুক্ত করুন ।

মোমবাতি প্রয়োজনীয়তা:

  • বেস |এবং শিখা *নিয়ে আগুনের শিখাটি বেসের শীর্ষে সজ্জিত থাকে।
  • মোমবাতিগুলি তির্যক বাদে সরাসরি অন্যের সাথে সংলগ্ন নাও হতে পারে।
  • মোমবাতি সর্বাধিক এক লাইনে 5 দিয়ে বাম থেকে ডানদিকে শীর্ষে থেকে নীচে স্থাপন করা হয়।
    (দ্রষ্টব্য: পূর্ববর্তী সারিতে যদি 5 টি মোমবাতি থাকে তবে পরবর্তী সারিতে 5 টি পাশাপাশি থাকতে পারে না, তখন থেকে তারা সংলগ্ন হবে be)

অতিরিক্ত নোট:

  • কেকের প্রস্থটি প্রথম সারিতে মোমবাতির সংখ্যার উপর নির্ভর করে , তবে এটি সর্বনিম্ন 5 টি অক্ষর এবং সর্বাধিক 9 অক্ষর প্রস্থ হতে হবে।
  • মোমবাতিগুলি শীর্ষে সারি থেকে শুরু করে বাম থেকে ডানে চলে গেছে in একবারে এক সারি পূর্ণ হলে পরেরটি প্রথমটির নীচের সারিতে শুরু করা উচিত।

ইনপুট:

আপনি নিজের পছন্দ মতো (যুক্তিসঙ্গত) ফর্ম্যাটটিতে একটি সংখ্যা গ্রহণ করতে পারেন।

এই চ্যালেঞ্জের জন্য আপনি ধরে নিতে পারেন যে সংখ্যাটি 0 থেকে 2 31 এর মধ্যে (0 সহ নয়), যদিও আমি এই বয়স্ক কাউকে স্বীকার করি না।

আউটপুট:

হয় আপনি কোনও স্ট্রিং ফিরিয়ে দিতে পারেন বা ফলাফলের পিষ্টকে সরাসরি আউটপুট কনসোলে লিখতে পারেন।

নিয়মাবলী:


উদাহরণ:

ইনপুট: 8

+-----------+
| * * * * * |
| |*|*|*| | |
|  | | |    |
|           |
+-----------+
|           |
+-----------+

ইনপুট: 2

+-----+
| * * |
| | | |
|     |
+-----+
|     |
+-----+

ইনপুট: 12

+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| |  |
| | | |     |
|           |
+-----------+
|           |
+-----------+

শুভকামনা!


একটি ইনপুট জন্য একাধিক বৈধ সমাধান থাকতে পারে?
অফিসিয়ালাইম

1
@officialaimm যেহেতু মোমবাতি অর্ডার এবং কেক-আকার দেওয়ার জন্য নির্দিষ্টকরণ রয়েছে এটি সম্ভব হয় না।
ইয়ান এইচ।

2
অকেজো সত্য: আপনি যদি প্রতি বছরের পরিবর্তে প্রতি সেকেন্ডে আপনার জন্মদিন উদযাপন করেন তবে 2 ^ 31 ~ = 68 বছর বয়সী। তবে এটি প্রতিদিন প্রচুর পিষ্টক তৈরি করে এবং কিছু সময়ের পরে ক্লান্ত হয়ে উঠতে পারে।
আর্নল্ড

1
@ আর্নল্ড তবে তার ৯৯% সময় এটি আপনার জন্মদিন নয় :( ... আপনি যদি জন্ম নিয়েছেন এমন সাধারণ ঘটনা উদযাপন না করেন তবে
ইয়ান এইচ।

3
@IanH। ধরা যাক যে আপনি নিজের উদ্বোধনের টাইমস্ট্যাম্পটি উদযাপন করছেন, তারপরে। :-)
আর্নল্ড

উত্তর:


10

কাঠকয়লা , 76 71 70 66 46 বাইট

NθF=+B⁺³⌊⟦χ⁺θθ⟧÷⁺℅ι⁺θθ⁹↘↘Fθ«↑|*¶¶¿‹⁶﹪⁺ιι⁹«M⁹←↓

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সম্পাদনা করুন: কেবলমাত্র এএএসসিআইআই_কে ধন্যবাদ 1 বাইট সংরক্ষিত মোমবাতি আঁকার একটি ঝরঝরে উপায় আবিষ্কার করে একটি বিশাল 20 বাইট সংরক্ষণ করা। ব্যাখ্যা:

NθF=+B⁺³⌊⟦χ⁺θθ⟧÷⁺℅ι⁺θθ⁹

অতিরিক্ত ভলিউম এবং কেকের শীর্ষের অংশ সহ পুরো কেকের উভয় আকারের গণনা করুন যাতে সেগুলি আঁকতে পারে। (( == ASCII 61) = ( += ASCII 43) অতিরিক্ত ভলিউমের জন্য 9 + 2।

↘↘Fθ«

5 টি মোমবাতির প্রথম সারিতে কার্সারটি সরান। প্রতিটি মোমবাতি মাধ্যমে লুপ।

↑|*¶¶

একটি মোমবাতি মুদ্রণ করুন এবং পরবর্তী মোমবাতির জন্য ডান দুটি অক্ষর সরান।

¿‹⁶﹪⁺ιι⁹«

তবে (শূন্য-সূচকযুক্ত) চতুর্থ, অষ্টম, 13 তম, 17 তম, 22 তম ইত্যাদি মোমবাতিগুলি (যা একটি সারির শেষে রয়েছে),

M⁹←↓

পরবর্তী সারিতে প্রথম মোমবাতিতে কার্সারটি সরান। এটি বিজোড় এমনকি সারি উভয় ক্ষেত্রেই কাজ করে!


1
আপনার সমাধানটি ইনপুট সংখ্যার জন্য 6 (অযাচিত) অতিরিক্ত সারি
ইয়ান এইচ।

@IanH। দুঃখিত, আমি ভেবেছিলাম যে এটি কোনও কারণে সর্বনিম্ন উচ্চতা was ফিক্সিং যা আসলে আমাকে 4 বাইট সংরক্ষণ করেছে!
নীল

এখনও টিআইওতে ভুল প্রদর্শন করে: /
ইয়ান এইচ।

1
@IanH। এটি অনলাইন চেষ্টা করুন! আমাকে আপনার উদাহরণে অভিন্ন আউটপুট দেয় ...
নীল

1
@ নীল মনে রাখবেন শুরুতে আপনার দরকার নেই : পি ( বিটিডব্লিউ আরেকটি গল্ফার (না-তাই) প্রান্তের সন্ধানের জন্য ধন্যবাদ)
এএসসিআই-কেবল

3

জেলি , 67 বাইট

s9s€5Ẏa;⁶;⁶z⁶Z
ç”|ṙ-ż"ç”*$U⁸RḤ’¤¦Ẏ€j@€“| “|”Zj@€⁾--Z”+®¦€0,1©¦;ṫ¥-Y

একটি মোনাডিক লিঙ্ক একটি সংখ্যা নিয়েছে এবং অক্ষরের একটি তালিকা বা আউটপুট মুদ্রণের একটি সম্পূর্ণ প্রোগ্রাম ফেরত দেয়।

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

কিভাবে?

s9s€5Ẏa;⁶;⁶z⁶Z - Link 1, make some candle parts & topping: number, age; character, part
s9             - split (implicit range(age)) into chunks of 9 (or remainder)
  s€5          - split each chunk of 9 into chunks of 5 (a 5 and a 4 or remainder)
     Ẏ         - tighten (to a list of lists of length 5, 4, 5, 4, ..., remainder)
      a        - logical and with the part character (either | or * here)
       ;⁶      - concatenate a space (we all still want topping when no candles)
         ;⁶    - ...and another (we also want some extra topping below the last row)
           z⁶  - transpose with filler space (fill the top with topping!)
             Z - transpose (put it back around the right way again chef)

ç”|ṙ-ż"ç”*$U⁸RḤ’¤¦Ẏ€j@€“| “|”Zj@€⁾--Z”+®¦€0,1©¦;ṫ¥-Y - Main link: number, age
ç”|                                                  - call last link (1) as a dyad with '|'
   ṙ-                                                - rotate left by -1
          $                                          - last two links as a monad:
       ç”*                                           -   call (1) as a dyad with '*'
      "                                              - zip with the dyadic operation:
     ż                                               -   zip (interleave each)
                 ¦                                   - sparse application:
           U                                         - ...of: upend (reverse each)
                ¤                                    - ...to indexes: nilad+links as a nilad:
            ⁸                                        -   chain's left argument, age
             R                                       -   range
              Ḥ                                      -   double (vectorises)
               ’                                     -   increment
                  Ẏ€                                 - tighten €ach (from '|*' or '*|' pairs)
                       “| “|”                        - literal ["| ", "|"]
                    j@€                              - join (swap arguments) for €ach (add a little extra topping to the left, and add piping to the sides)
                             Z                       - transpose
                                 ⁾--                 - literal "--"
                              j@€                    - join (swap arguments) for €ach (add piping to the top and bottom edges)
                                    Z                - transpose (time to invest in a potters wheel!)
                                              ¦      - sparse application:
                                          0,1        - ...to indexes: [0,1] (both ends)
                                             ©       -   (copy that to the register)
                                         €           - ...of: for each:
                                        ¦            -   sparse application:
                                     ”+              -   ...of: '+' character
                                       ®             -   ...to indexes: recall from register (both ends)
                                                  -  - literal -1
                                                 ¥   - last two links as a dyad
                                                ṫ    -   tail from index (gets last two rows)
                                               ;     -   concatenate (repeats them underneath)
                                                   Y - join with newlines
                                                     - as a full program: implicit print

1
পবিত্র কাঠকয়াল মারার জন্য কী +1
ASCII- কেবল

@ এএসসিআইআই কেবল দুঃখিত, আমি একটি 4-বাইট সঞ্চয় পেয়েছি ...
নীল

@ নীল ভাল এটিও বেশ ভাল, চারকোল এএসসিআইআই আর্টে ভাল হওয়ার কথা বলেছে (জেলির চেয়ে ভাল): পি
এএসসিআই-কেবল

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