বালতি পূরণ করুন


14

আপনার কাজটি কোনও নির্দিষ্ট ইনপুট পর্যন্ত সংখ্যা সহ বালতিটি পূরণ করা fill

বিধি

সংখ্যাগুলি বাম দিকের অবস্থানটি ধরে রাখে তারপরে ডানদিকের, তারপরে বামদিকে এবং আরও অনেক কিছু।

উপচে পড়ার পরে, সংখ্যাগুলি একইভাবে বালতির চারপাশে জড়ো হতে শুরু করে। তারা ত্রিভুজ অবস্থান দখল।

প্রত্যাশিত আউটপুট কী তা উদাহরণগুলি পরিষ্কার করে দেওয়া উচিত (উদাহরণগুলিতে কিছু নিয়ম উল্লেখ করা হয়েছে)।

10 এর পরে আরও বেশি জন্য ডানদিকের অঙ্কটি ব্যবহার করুন

উদাহরণ:

The bucket: 
|      |  or |      | 
|      |     |      | 
|      |     |      |
|      |     |      |
|------|     |______|

input:1  (You can start from either 0 or 1)
output:
|      |  (There can be whitespace to the left even if there is no overflow
|      |  but the bucket must not be distorted.)
|      |
|1     |
|------|

input:6
output:
|      |
|      |
|      |
|135642|
|------|

input:8
output:
|      |
|      |
|7    8|
|135642|
|------|

input:23
output:
|913 20|
|357864|
|791208|
|135642|
|------|

input:27
output:
  |913420|
  |357864|
  |791208|
  |135642|
75|------|6

input:30
output:
  |913420|
  |357864|
  |791208|
 9|135642|0
75|------|68

input:40
output:
    |913420|
    |357864|
   5|791208|6
 939|135642|040
7175|------|6828

input:54   (Maximum input for start=1)
    3|913420|4
   13|357864|42
  915|791208|620
 7939|135642|0408
57175|------|68286

এটি কোড-গল্ফ তাই সংক্ষিপ্ততম কোডের জয়।


|024531|এন=6

@ আরনাউল্ড, হ্যাঁ, ক্রমটি 0 থেকে শুরু হতে পারে
বেদন্ত কান্দোই

আমি এখানে দেখেছি কোড গল্ফের জন্য এটি অন্যতম সেরা কোডিং চ্যালেঞ্জ!
মাইকেল কারাস

উত্তর:


9

জাভাস্ক্রিপ্ট (নোড.জেএস) ,  145  143 বাইট

একটি হার্ড-কোডেড প্যাটার্ন ( আরও গণিতের জন্য এখানে দেখুন)।

1-ইন্ডেক্স।

n=>`    g|EGIJHF|h
   e]|?ACDB@|^f
  c[U|9;=><:|V\\d
 aYSO|357864|PTZb
_WQMK|------|LNRX\``.replace(/[3-h]/g,c=>(x=Buffer(c)[0])<n+51?x%10:' ')

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

2 বাইট সংরক্ষণ করেছেন @ টিএসএকে ধন্যবাদ


1
/[^\s|-]/->/[0-z]/
tsh

@ টিএস ডি'ওহ! আমি এই সরলীকরণটি পুরোপুরি মিস করেছি। ধন্যবাদ!
আর্নৌল্ড

7

জাভাস্ক্রিপ্ট (ES6),  144 ... 139  137 বাইট

একটি গাণিতিক পদ্ধতির ( কম গণিতের জন্য এখানে দেখুন )।

0-ইন্ডেক্স।

n=>(y=4,g=x=>~y?(X=x>8?17-x:x,k=X<y?g:X<5?24-(z=4+y-X)*~z+y*2:y*6+X*2-18,~X?X^5?k<0?'-':(k+=x>8)<n?k%10:' ':'|':`
`)+g(~X?-~x:!y--):'')()

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

কিভাবে?

Y40এক্স018

আমরা সংজ্ঞায়িত করি:

এক্স={এক্সযদি এক্স817-এক্সযদি এক্স>8

কেবলমাত্র ইউনিটের অঙ্কগুলির চেয়ে পূর্ণ মানগুলি লিখে আমরা নীচের সারণিটি পাই:

 x |  0  1  2  3  4  5  6  7  8 |  9 10 11 12 13 14 15 16 17 18
 X |  0  1  2  3  4  5  6  7  8 |  8  7  6  5  4  3  2  1  0 -1
---+----------------------------+-------------------------------
 4 | .. .. .. .. 52 || 18 20 22 | 23 21 19 || 53 .. .. .. .. \n
 3 | .. .. .. 50 42 || 12 14 16 | 17 15 13 || 43 51 .. .. .. \n
 2 | .. .. 48 40 34 || 6  8  10 | 11 9  7  || 35 41 49 .. .. \n
 1 | .. 46 38 32 28 || 0  2  4  | 5  3  1  || 29 33 39 47 .. \n
 0 | 44 36 30 26 24 || -- -- -- | -- -- -- || 25 27 31 37 45 \n

এই টেবিলটি মূলত y- অক্ষ জুড়ে প্রতিসাম্যযুক্ত, বাম দিকের মানগুলি সমান এবং ডান পাশের মানগুলি তাদের বিজোড় অংশগুলির ব্যতীত।

আমরা সংজ্ঞায়িত করি:

={24+ +(4+ +Y-এক্স)(5+ +Y-এক্স)+ +2Yযদি এক্স<56Y+ +2এক্স-18যদি এক্স>5

'={যদি এক্স8+ +1যদি এক্স>8

এবং প্রতিটি কক্ষের জন্য, আমরা সংযোজন:

  • হলে একটি লাইনফিডএক্স=-1
  • হলে একটি পাইপএক্স=5
  • <0
  • এক্স<Y'>এনএন
  • 'গেলিক ভাষার10

মন্তব্য

n => (                                // main function taking n
  y = 4,                              // start with y = 4
  g = x =>                            // g = recursive function taking x
    ~y ?                              // if y is not equal to -1:
      ( X = x > 8 ? 17 - x : x,       //   compute X
        k = X < y ?                   //   if X is less than y:
          g                           //     set k to a non-numeric value
        :                             //   else:
          X < 5 ?                     //     if X is less than 5:
            24 - (z = 4 + y - X) * ~z //       apply the 'side numbers' formula
             + y * 2                  //
          :                           //     else:
            y * 6 + X * 2 - 18,       //       apply the 'middle numbers' formula
        ~X ?                          //   if X is not equal to -1:
          X ^ 5 ?                     //     if X is not equal to 5:
            k < 0 ?                   //       if k is less than 0:
              '-'                     //         append a hyphen
            :                         //       else:
              (k += x > 8) < n ?      //         update k to k'; if it's less than n:
                k % 10                //           append the unit digit of k'
              :                       //         else:
                ' '                   //           append a space
          :                           //     else (X = 5):
            '|'                       //       append a pipe
        :                             //   else (X = -1):
          `\n`                        //     append a linefeed
      )                               //
      + g(~X ? -~x : !y--)            //   update x and y, and do a recursive call
    :                                 // else (y = -1):
      ''                              //   stop recursion
)()                                   // initial call to g with x undefined


3

জাভা 10, 168 বাইট

n->"    g|EGIJHF|h\n   e]|?ACDB@|^f\n  c[U|9;=><:|V\\d\n aYSO|357864|PTZb\n_WQMK|------|LNRX`".chars().forEach(c->System.out.print(c<46|c==124?(char)c:c<n+51?c%10:" "))

@ আরনাউল্ডের জাভাস্ক্রিপ্ট উত্তরের পোর্ট ( একইভাবে 1- সূচকযুক্ত এবং -নীচে হিসাবে আউটপুটিং )। আপনি যদি এই উত্তরটি পছন্দ করেন, তবে তাকেও উত্সাহিত করতে ভুলবেন না!

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

ব্যাখ্যা:

n->                      // Method with integer parameter and no return-type
  "    g|EGIJHF|h\n   e]|?ACDB@|^f\n  c[U|9;=><:|V\\d\n aYSO|357864|PTZb\n_WQMK|------|LNRX`"
                         //  String containing the bucket and magic string
   .chars().forEach(c->  //  Loop over the characters (as integers)
     System.out.print(   //   Print:
       c<46|c==124?      //    If the character is "\n", " ", "-", or "|":
        (char)c          //     Output the character as is
       :c<n+51?          //    Else-if the character value is smaller than the input + 51:
        c%10             //     Output a digit: the character value modulo-9
       :                 //    Else:
        " "))            //     Output a space

1

6502 মেশিন কোড (সি 64), 130 বাইট

00 C0 20 9B B7 A9 C0 65 65 85 FB A2 00 BD 2B C0 F0 1A 10 12 C5 FB 90 04 A9 20
D0 0A 69 70 C9 3A 90 04 E9 0A B0 F8 20 D2 FF E8 D0 E1 60 20 20 20 20 F5 7D D3
D5 D7 D8 D6 D4 7D F6 0D 20 20 20 F3 EB 7D CD CF D1 D2 D0 CE 7D EC F4 0D 20 20
F1 E9 E3 7D C7 C9 CB CC CA C8 7D E4 EA F2 0D 20 EF E7 E1 DD 7D C1 C3 C5 C6 C4
C2 7D DE E2 E8 F0 0D ED E5 DF DB D9 7D 2D 2D 2D 2D 2D 2D 7D DA DC E0 E6 EE 00

এটি অন্যান্য উত্তরগুলির "পূর্বরূপিত" পদ্ধতির পরিবর্তিত সংস্করণ ব্যবহার করে। এটি বালতিটির পুরো স্ট্রিং ধারণ করে, তবে অঙ্কগুলি শুরু হওয়া মান দ্বারা প্রতিস্থাপিত হয় 0xC1, যখন সরাসরি মুদ্রণের জন্য কোনও অক্ষর সীমার মধ্যে থাকে 0x01- 0x7f

সি 64 চরসেটে কোনও পাইপ ( |) অক্ষর অন্তর্ভুক্ত নয়, সুতরাং এটি একই চেহারাযুক্ত পিইটিএসসিআইআই অক্ষর দ্বারা প্রতিস্থাপিত হয়েছে 0x7d

অনলাইন ডেমো

ব্যবহার: SYS49152,[n](1-সূচকযুক্ত, যেমন SYS49152,54সম্পূর্ণ আউটপুট জন্য)

মন্তব্য বিচ্ছিন্ন :

         00 C0       .WORD $C000        ; load address
.C:c000  20 9B B7    JSR $B79B          ; get unsigned byte from commandline
.C:c003  A9 C0       LDA #$C0           ; add #$C0 (+ carry = #$C1) ...
.C:c005  65 65       ADC $65            ; ... to parameter
.C:c007  85 FB       STA $FB            ; and store in $FB
.C:c009  A2 00       LDX #$00           ; loop index
.C:c00b   .loop:
.C:c00b  BD 2B C0    LDA .bucket,X      ; loop over encoded string
.C:c00e  F0 1A       BEQ .done          ; null-terminator -> done
.C:c010  10 12       BPL .out           ; positive (bit 7 clear) -> output
.C:c012  C5 FB       CMP $FB            ; compare with parameter+#$C1
.C:c014  90 04       BCC .digit         ; smaller -> convert to digit
.C:c016  A9 20       LDA #$20           ; otherwise load space character
.C:c018  D0 0A       BNE .out           ; and output
.C:c01a   .digit:
.C:c01a  69 70       ADC #$70           ; add offset to '0' (#$30)
.C:c01c   .check:
.C:c01c  C9 3A       CMP #$3A           ; greater than '9' (#$39) ?
.C:c01e  90 04       BCC .out           ; no -> to output
.C:c020  E9 0A       SBC #$0A           ; otherwise subtract 10 (#$a)
.C:c022  B0 F8       BCS .check         ; and check again
.C:c024   .out:
.C:c024  20 D2 FF    JSR $FFD2          ; output character
.C:c027  E8          INX                ; next index
.C:c028  D0 E1       BNE .loop          ; and repeat loop
.C:c02a   .done:
.C:c02a  60          RTS                ; exit ....
.C:c02b   .bucket:
.C:c02b  20 20 20    [...]              ; "encoded" string for bucket

0

কাঠকয়লা , 64 বাইট

Nθ³↑⁵‖M←F²«‖J⁻³ι±¹F⊘⁺θ¬ι«↖I﹪⁺⊗κ⊕ιχM§”)⊟E≡≦⌈▷⊖ü∕”κ§”)⊟&hXτtD(λM”κ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Nθ

নম্বরটি ইনপুট করুন।

³↑⁵‖M←

বালতিটির অর্ধেক আঁকুন এবং তারপরে এটি বালতিটি সম্পূর্ণ করতে মিরর করুন।

F²«

বালতি প্রতিটি পাশের জন্য লুপ।

‖J⁻³ι±¹

বালতিটি প্রতিবিম্বিত করুন যাতে আমরা উভয় লুপগুলিতে ধারাবাহিক দিকে আঁকতে পারি এবং বালতির that পাশের প্রথম অঙ্কের অবস্থানে যেতে পারি।

F⊘⁺θ¬ι«

বালতির সেই পাশের সংখ্যার উপরে লুপ করুন।

↖I﹪⁺⊗κ⊕ιχ

পরবর্তী অঙ্কটি মুদ্রণ করুন এবং কার্সারটিকে উপরে এবং বামে সরান।

M§”)⊟E≡≦⌈▷⊖ü∕”κ§”)⊟&hXτtD(λM”κ

দুটি সংক্ষেপিত স্ট্রিং, 003003003005203004000500(অনুভূমিক অফসেট) এবং 11011011011510200300040000(উল্লম্ব অফসেট) থেকে অফসেটগুলি পড়ে কার্সারের অবস্থানটি সামঞ্জস্য করুন । এই অফসেটগুলি উপরের কার্সার চলাচলটিকে অ্যাকাউন্টে গ্রহণ করে যার সুবিধামত অর্থ হল যে তাদের কখনই নেতিবাচক হতে হবে না।

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