বেসিক এএসসিআইআই ট্যালিস


36

বিকল্প শিরোনাম: দেওয়ালে আপনার কারাগারের সাজা ট্যালি করুন

একটি সংখ্যা দেওয়া হয়েছে n, আউটপুট লম্বাগুলি প্রতি গ্রুপে traditionalতিহ্যবাহী 5-তে এবং 50 প্রতি সারি বিভক্ত হয়েছে।


উদাহরণ

1

|
|
|
|

4

||||
||||
||||
||||

5

|||/
||/|
|/||
/|||

6

|||/ |
||/| |
|/|| |
/||| |

50

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

51

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

|
|
|
|

256

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

|||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/ |||/
||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/| ||/|
|/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/|| |/||
/||| /||| /||| /||| /||| /||| /||| /||| /||| /||| 

|||/ |
||/| |
|/|| |
/||| |

বিধি

  • প্রতি গ্রুপে 5 টি লম্বা, প্রতি সারি 50 টি লম্বা।
  • প্রথম 4 টি লম্বালম্বি হয়, 5 তম ট্যালিটি সমস্ত অন্যান্য উচ্চতা অতিক্রম করে।
    • প্রথম চারটির প্রত্যেকটিতে 4 টি উল্লম্ব |অক্ষর থাকে।
    • চূড়ান্ত 5 তম ট্যালিটি /তির্যকভাবে একটি অক্ষর সহ প্রথম 4 টি জুড়ে ।
  • প্রতিটি গ্রুপকে একটি স্পেস দিয়ে আলাদা করা উচিত, প্রতিটি সারিতে একটি ফাঁকা নিউলাইন।
  • সীমাবদ্ধতাগুলি হ'ল n: 0 <= n <= 1000(সরলতার জন্য)।
  • ট্রেলিং স্পেস এবং নিউলাইনগুলি ঠিক আছে, পূর্ববর্তী নয়।
  • এটি , সর্বনিম্ন বাইট-কাউন্ট জেতা।

স্যান্ডবক্সে ~ 4 জন দ্বারা পর্যালোচনা করা হয়েছে ।


পিএস মজা সামান্য জোয়ার-বিট, কারাগারে প্রতি সারিতে লম্বা লম্বার গড় সংখ্যা ছিল 50, সুতরাং এটি ওয়েল। খেতাব.



দুর্দান্ত চ্যালেঞ্জ, জটিল এখনও সহজ।
এটাকো

@ATaco আমি সত্যিই সমাধানটি খুঁজে পেতে চাই যা "বড় চিত্র" এ স্ল্যাশগুলিকে একত্রিত করে এবং বিবেচনা করে যে স্ল্যাশ প্যাটার্নটি সারি অনুসারে নির্ধারণ করা যেতে পারে (এটাই সহজ জয়)।
ম্যাজিক অক্টোপাস উরন

2
পিছনে স্ল্যাশের পরিবর্তে তাদের ফরোয়ার্ড স্ল্যাশ করার জন্য আপনাকে অনেক ধন্যবাদ ।
সম্পূর্ণমানবিক

1
@ টোটালিহুমান ওহ godশ্বর, আমি পোস্ট করা ছবিটির লোকটি ... সর্বজনীন কি? বার্নস্টেইন এটি আবারও বহন করছে ... সর্বাধিক সাম্প্রতিকতম মার্কিন নির্বাচনের সিদ্ধান্ত নেওয়ার জন্য কি মুদ্রা মাথায় বা লেজে গেছে ?!
ম্যাজিক অক্টোপাস উরান

উত্তর:


11

কাঠকয়লা , 30 25 বাইট

FN«J﹪ι⁵⁰×⁵÷ι⁵⁰¿﹪⊕ι⁵↓⁴«←↙⁴

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

 N                          Input number
F «                         Loop over implicit range
     ι     ι                Loop index
      ⁵⁰    ⁵⁰              Literal 50
    ﹪                       Modulo
          ÷                 Integer divide
         ⁵                  Literal 5
        ×                   Multiply
   J                        Jump to column, row
                 ι          Loop index
                ⊕           Incremented
                  ⁵         Literal 5
               ﹪            Modulo
              ¿             If
                   ↓⁴       Print 4 `|`s downwards
                     «      Implicit else
                      ←     Move left
                       ↙⁴   Print 4 `/`s down and left

6

ফানকি , 156 132 133 বাইট

n=>{k=n=>((l="|"::rep)(3-i)+"/"+l(i)+" ")::rep(n)p=print L=f=>fori=0i<4i++p(f())forc=0c<n//50c++{L@k(10);p()}L@k((m=n%50)//5)+l(m%5)}

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


1
ফানকি একটি ... এখন কি? মজাদার. আমার কোনও চ্যালেঞ্জের আগে এই ভাষাটি কখনও দেখেনি।
ম্যাজিক অক্টোপাস উরন

1
@ ম্যাজিক অ্যাক্টোপাস ইউরান সম্ভবত কারণ আমি এটি লিখেছি: পি
এটাকো

1
একটি জাভাস্ক্রিপ্ট ভিত্তিক ভাষা? বিপজ্জনক। তবে তা ঠিক আছে, আমি বিপদ পছন্দ করি।
ম্যাজিক অক্টোপাস আরন

1
fori=0i<4i++p(f())forc=0c<n//50c++সিনট্যাক্সের নাম নিচ্ছে এই
অপরিষ্কার জন্তুটি কী



5

জেলি , 37 বাইট

:5[“|||/”]ẋ;”|ẋ⁸%5¤¤W¤ṙ€4Ḷ¤s⁵Z€G€j⁾¶¶

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

ব্যাখ্যা

:5[“|||/”]ẋ;”|ẋ⁸%5¤¤W¤ṙ€4Ḷ¤s⁵Z€G€j⁾¶¶  Main Link
:5                                     Floordiv by 5
  [“|||/”]ẋ                            Repeat ["|||/"] by this number
           ;                           Append
            ”|ẋ    ¤                   "|" repeated by
               ⁸%5¤                    The argument modulo 5
                    W¤                 Then wrapped to prevent weirdness
                      ṙ€               Rotate each tally segment by
                        4Ḷ¤            (each) [0, 1, 2, 3]
                           s⁵          Slice into pieces of length 10 (to get 50 per row)
                             Z€        Transpose each
                               G€      Convert each into a grid
                                 j⁾¶¶  Join these grids by a double newline

হুই এটি অনেক দীর্ঘ


@ ফ্রাউনফ্র্যাগ ঠিক করেছেন, ধন্যবাদ!
হাইপারনিউটারিনো

4

কাস্তে , 29 বাইট

J;øṀṪṙŀ4C10§:oR"|||/"÷5oR'|%5

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

আমার মনে হচ্ছে প্রথমটি 5রিডানডান্ট তবে এটি অপসারণ করলে একধরণের ত্রুটি হয় ...

ব্যাখ্যা

J;øṀṪṙŀ4C10§:oR"|||/"÷5oR'|%5  Implicit input, an integer n.
                       oR'|    Repeat the character '|'
                           %5  n mod 5 times.
             oR"|||/"          Repeat the string "|||/"
                     ÷5        n/5 times.
           §:                  Tack the '|'-string to the end of that list.
        C10                    Cut the list of strings into pieces of length 10.
   Ṁ                           For each piece,
    Ṫ ŀ4                       for each k in [0,1,2,3],
     ṙ                         rotate each string k steps to the left
                               and collect the results into a list.
                               Now we have a list of lists of lists of strings.
J;ø                            Join them with the list [[]].
                               Implicitly join each list of strings by spaces,
                               then join the resulting list of strings by newlines,
                               and print the result.

4

এসওজিএল ভি0.12 , 33 বাইট

ā.{┐4∙F5\?X1w⁄3-14╚╬5@}┼FM»\?O¶oā

এখানে চেষ্টা করুন!

একটি ফোনে গল্ফ করা শক্ত ..

ব্যাখ্যা:

ā                                  push an empty array
 .{                                repeat input times
   ┐4∙                               push a 4 tall line
      F5\?            }              if the counter (1-indexed) divides by 5
          X                            pop that vertical line
           1w⁄                         get the width of the main array
              3-                       subtract 3 from that width - X position
                1                      push 1 - Y position
                 4╚                    push a 4 long diagonal
                   ╬5                  place that in the main array at [width-3; 1]
                     @                 push a space - for the below to add spacing
                       ┼             append horizontally
                        FM»\?        if the counter divides by 50
                             O         output the main array
                              ¶o       output a newline
                                ā      push a new array
                                       (note that the outputting here doesn't disable
                                       implicit outputting)

4

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

n=>eval('s="";for(i=0;i++<=n/50;s+=N)for(j=5;--j;s+=N=`\n`)for(k=0;k<(x=(y=n-i*50)<0?50+y:50);)s+=++k%5?k%5-j|k>5*(x/5|0)?"|":"/":" ";s')

এক চিহ্ন রাখুন NEWLINE একটি স্ট্রিং রিটার্নস যখন n50 এর গুণিতক এবং বেশ কিছু চিহ্ন নতুন লাইন সঙ্গে এক যখন নয় n হয় 50 এর গুণিতক।

Ungolfed

n=>{
    s=""
    for(i=0; i++ <= n/50; s+=N)
        for(j=5; --j; s+=N=`\n`)
            for(k=0; k < (x = (y = n-i*50) < 0 ? 50+y : 50);)
                s += ++k%5 ?
                    k%5-j|k>5*(x/5|0) ?
                        "|"
                    : "/"
                : " "
    return s
}

পরীক্ষার স্নিপেট

অ- evalসমাধান, 150 বাইট

n=>(A=(v,m)=>j=>[...Array(v).keys()].map(m).join(j))(n/50+1|0,i=>A(4,j=>A(x=(y=n+~i*50)<0?50+y:50,k=>++k%5?k%5-4+j|k>5*(x/5|0)?"|":"/":" ")``)`
`)`

`

সম্ভবত এটিকে আরও গল্ফ করতে সক্ষম তবে evalপদ্ধতিটি এখন পর্যন্ত সংক্ষিপ্ত হয়েছে।


অসম্পূর্ণ সংস্করণটির মাধ্যমে কাজ করতে এবং এটি বুঝতে আমার 10 মিনিট সময় নিয়েছিল। = ^ পি আপনি সেখানে কিছু দুর্দান্ত কৌশল পেয়ে গেছেন।
DLosc

নিশ্চিত যে আপনি (i = 0; ++ i <n / 50; s + = N) এর জন্য যা করতে পারেন যা একটি চর সংরক্ষণ করে
ড্যানিয়েলইন্ডি

@ ড্যানিয়েলআইডি এটি ব্যর্থ হয়েছে কারণ বাইরের লুপটি খুব কয়েকবার চলে: অনলাইনে চেষ্টা করে দেখুন!
জাস্টিন মেরিনার

4

জে , 50 48 45 35 33 বাইট

_50|:\'|/ '{~[{.(|.2,=i.4)$~]-5|]

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

                (    =i.4)          Identity matrix of size 4.
                (  2,    )          Prepend a row of 2s.
                (|.      )          Upside down.
                          $~        Take __ rows.
                            ]-5|]   Input rounded down to a multiple of 5.
             [{.                    Pad with rows of zeroes to [input] rows.
      '|/ '{~                       Get the characters.
_50|:\                              Transpose and fit to width.

আমি এই অংশটির জন্য ইনফিক্সগুলি ব্যবহার করার ধারণাটি পছন্দ করি4,&' '\7$'|||/'
জোনা

@ জোনাঃ যেতে হয়েছিল :(
ফ্রাউনফ্রগ

3

সি (জিসিসি), 170 বাইট

char*s="|||/ \0||/| \0|/|| \0/||| \0";h;k;g(x){for(h=0;h<5;h++){for(k=x;k>4;k-=5)printf(s+6*h);for(;k&&h-4;k--)printf("|");putchar(10);}}f(x){for(;x>49;x-=50)g(50);g(x);}

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

fহ'ল একটি ফাংশন যা একটি nonnegative পূর্ণসংখ্যার ( x) এবং মুদ্রণ যে অনেকগুলি দীর্ঘ হিসাবে নির্দিষ্ট হিসাবে গোষ্ঠী করা হয় স্টাডআউট

g এটি একটি সহায়ক ফাংশন যা মুদ্রণ করে x লম্বাগুলি করে, বিভাজন রেখা ছাড়াই 5 দ্বারা গোষ্ঠীযুক্ত।

f50 এর চেয়ে কম না হওয়া পর্যন্ত কল g(50)এবং x50 হ্রাস হবে, তারপরে কল করুনg(x) একটি লাইনে অবশিষ্ট দীর্ঘগুলি প্রিন্ট করার জন্য করে।

sএকটি হল char*যেমন যে স্ট্রিং হিসেবে s, একটি বান্ডিল প্রথম সারি হয় s+6দ্বিতীয়, s+12তৃতীয়, এবং s+18চতুর্থ, এবংs+24 একটি খালি স্ট্রিং।

g(x)এক্স 5 এর চেয়ে কম হওয়া অবধি, 5 দ্বারা বান্ডিল এবং হ্রাস x মুদ্রণ করবে, তারপরে xএকক লম্বা মুদ্রণ করবে ।



2

পাইথন 2 , 142 বাইট

n=input()
while n>0:print"\n".join("".join("|/ "[2*(j%5>3)+(n/(5*(j/5+1))and 3-i==j%5)]for j in range(min(50,n)))for i in range(4)),"\n";n-=50

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


1
18 মিনিটে 142 বাইট? খারাপ না :).
ম্যাজিক অক্টোপাস উরন

3
এক ঘন্টা আগে আপনার যখন ঘুমোতে উচিত ছিল তখন দ্রুত কাজ করতে হবে
হালভার্ড হামেল

Quick ~= Quality;)। সুন্দর কাজ.
ম্যাজিক অক্টোপাস উরন

3
ত্রুটি ... এটি ভুল ধারণা হতে পারে। আপনি মানসম্পন্ন কাজ দ্রুত করেছেন বলে ... বিপরীতে নয়।
ম্যাজিক অক্টোপাস উরন




2

পিএইচপি, 138 141 + 1 বাইট

সম্ভবত সবচেয়ে সংক্ষিপ্ততম সমাধান নয়

for(;0<$z=50+min($n=$x=$y=0,$argn-=50);print"
")while($n++<$z||!$x=+(3<$y+=$n=print"
"))echo"/| "[$n%5?($y+$x++)%4<3|$n%5+$y<4|$z-$z%5<$n:2];

পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন


ঝরঝরে! তবে টালিগুলিতে দ্বিতীয় ট্যালি-লাইনটি পুরোপুরি পার হয় না।
স্পাজমার্টিকাস

আপনার "অনলাইনে এটি চেষ্টা করুন" উদাহরণটি 5.5 চালু থেকে স্থানীয়ভাবে 5.6.31 এবং 7.1.9 এ চালিত করুন।
স্পাজমার্টিকাস

1
$xশুধুমাত্র প্রথম লুপ undefined হয়, ট্যালি বৃহত্তর জন্য আউটপুট আপ এই messes চেয়ে 54. ফিক্সড কিন্তু golfed না: sandbox.onlinephpfunctions.com/code/...
SpazzMarticus

@ স্প্যাজমার্টিকাস স্থির
টিটাস

শান্ত! এটি আমার প্রথমবারের মতো গল্ফড কোডটি ডিবাগ করছিল, আপনি আমাকে কঠিন সময় দিয়েছেন! :) আমার মনে হয় আমি কড়া!
স্পাজমার্টিকাস

2

পাইথন, 129 113 112 বাইট

f=lambda n:n>50and f(50)+"\n\n"+f(n-50)or"\n".join(("|||/|||"[k:k+4]+" ")*(n//5)+" "+"|"*(n%5)for k in range(4))

ব্যাখ্যা

def p(n):
  if n > 50:
    return p(50) + "\n\n" + p(n-50) # Handle 50-groups recursively
  else:
    # For each of the 4 lines:
    rows = []
    for row in range(4):
      #  - Build the "|||/"-blocks by slicing the correct part of "|||/|||".
      #  - Do that n/5 times
      #  - Then add "|" n%5 times
      rows += [("|||/|||"[row:row+4]+" ")*(n//5) + " " + "|"*(n%5)]

    # Join the four rows together
    return "\n".join(rows)

পাইথন 2 এবং 3 এ কাজ করে।

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



1

রুবি , 100 বাইট

->n{(n/-50*-4).times{|i|j=[n-i/4*50,50].min
$><<("|||/|||"[i%4,4]+" ")*(j/5)+?|*(j%5)+$/*(1+i%4/3)}}

মন্তব্য

->n{(n/-50*-4).times{|i|              #Calculate rows of tallies (Ruby rounds division towards negative infinity. Multiply by 4 lines per tally and iterate through them.)
  j=[n-i/4*50,50].min                 #Number of strokes printed in current row is either the number remaining, or 50, whichever is less
    $><<("|||/|||"[i%4,4]+" ")*(j/5)+ #Send to stdout the correct 4 chars selected from "|||/|||" plus a space, j/5 times (rounded down, which eliminates odd strokes.) 
    ?|*(j%5)+                         #If there are any odd strokes, add them to the output
    $/*(1+i%4/3)                      #followed by a newline (2 for the final line of each row of tallies.)
  }
}

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


1

পিপ , 47 46 বাইট

Wa-:yP('|X4.sRA3-_'/M,4)X(YMN[a50])/5.'|Xy%5.n

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

ব্যাখ্যা

        Implicit: a is 1st cmdline arg, y is "", s is space, n is newline
W       While loop:
 a-:y   Each iteration, subtract y from a and check if a is still nonzero
        (Since "" is 0 in numeric contexts, this does nothing the first time through)
     P  Print the following:

('|X4.sRA3-_'/M,4)X(YMN[a50])/5.'|Xy%5.n
              M                           Map this function to each number in
               ,4                         range(4):
 '|X4                                      String of four pipe characters
     .s                                    Concatenate a space
       RA                                  Replace the character at index
         3-_                                (3 minus function argument)
            '/                              with forward slash

                                          We now have a list of four strings representing
                                           the rows of a group of 5 tally marks; the
                                           following operations apply to the list
                                           element-wise:

                       [a50]              List of a (number of remaining tallies) and 50
                     MN                   Get the min (number of tallies on this row)
                    Y                     Yank it into y
                   (        )/5           Divide by 5 (number of groups on this row)
(                )X                       String-multiply by that amount
                                   y%5    Number of leftover tallies on this row
                                '|X       String-multiply that many pipes
                               .          Concatenate
                                      .n  Concatenate a newline

ফলাফলের তালিকাটি এরকম কিছু হবে:

["|||/ ||\n" "||/| ||\n" "|/|| ||\n" "/||| ||\n"]

ডিফল্টরূপে, Pতালিকার বিষয়বস্তু একসাথে একত্রিত করে এবং একটি অনুবর্তনযোগ্য নিউলাইন দিয়ে আউটপুট করে। সুতরাং, আমরা পেতে

|||/ ||
||/| ||
|/|| ||
/||| ||

সঙ্গে দুই চিহ্ন নতুন লাইন (তালিকা বিষয়বস্তু থেকে এক এবং এক দ্বারা যোগ P)। যদি অন্য কোনও সারি মুদ্রিত হয় তবে এটি এর মধ্যে প্রয়োজনীয় ফাঁকা রেখা দেয়।




0

05 এ বি 1 ই , 28 বাইট

5‰"|||/"¬‚×J4ôTôεε3Ý._}ø»¶«,

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

ব্যাখ্যা:

5              # Divmod the (implicit) input-integer by 5
                #  i.e. 111 → [22,1]
  "|||/"        # Push string "|||/"
        ¬       # Push its first character (without popping the string itself): "|"
               # Pair them together: ["|||/","|"]
          ×     # Repeat it based on the divmod
                #  i.e. [22,1] → ["|||/|||/|||/...|||/|||/|||/","|"]
           J    # Join everything together to a single string
                #  → "|||/|||/|||/...|||/|||/|||/|"
            4ô  # Which is then split into block of size 4
                #  → ["|||/","|||/","|||/",...,"|||/","|||/","|||/","|"]
Tô              # Then split this list into sublists of size 10
                #  → ["|||/","|||/","|||/",...],[...,"|||/"],["|||/","|||/","|"]]
  ε             # For-each over the sublists:
   ε            #  Map over the strings in the sublist:
    3Ý          #   Push list [0,1,2,3]
      ._        #   For each: rotate the string that many times
                #    ("|||/" → ["|||/","||/|","|/||","/|||"])
              #  After the map: zip/transpose; swapping rows/columns
     »          #  Join each inner list by spaces, and then the strings by newlines
      ¶«        #  Append a newline to each string
        ,       #  And print with trailing newline

¶«,অবশ্যই কয়েকটি সম্ভাব্য সমান-বাইট বিকল্প রয়েছে, যেমন ,¶?বা এর মতো ,õ,



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