আপনাকে অবশ্যই ASCII পাইলনগুলি তৈরি করতে হবে!


24

আমার অ্যানগল্ফ পোস্ট থেকে ক্রস পোস্ট করা হয়েছে (দ্রষ্টব্য: স্পয়লার থাকতে পারে, ময়না তদন্ত করতে পারে)।

নিম্নলিখিত পাঠ্যটি ঠিকঠাক আউটপুট করুন।

  • আপনার প্রতিটি লাইনে অতিরিক্ত পেছনের শ্বেত স্থান থাকতে পারে এবং পাশাপাশি নতুন লাইনেও পিছনে থাকতে পারে।
  • সংক্ষিপ্ততম কোড, বাইটে, জিতল।
                                                
                                              !"!
                                             "#$#"
                                            #$%&%$#
                                           $%&'('&%$
                                          %&'()*)('&%
                                         &'()*+,+*)('&
                                        '()*+,-.-,+*)('
                                       ()*+,-./0/.-,+*)(
                                      )*+,-./01210/.-,+*)
                                     *+,-./012343210/.-,+*
                                    +,-./0123456543210/.-,+
                                   ,-./01234567876543210/.-,
                                  -./0123456789:9876543210/.-
                                 ./0123456789:;<;:9876543210/.
                                /0123456789:;<=>=<;:9876543210/
                               0123456789:;<=>?@?>=<;:9876543210
                              123456789:;<=>?@ABA@?>=<;:987654321
                             23456789:;<=>?@ABCDCBA@?>=<;:98765432
                            3456789:;<=>?@ABCDEFEDCBA@?>=<;:9876543
                           456789:;<=>?@ABCDEFGHGFEDCBA@?>=<;:987654
                          56789:;<=>?@ABCDEFGHIJIHGFEDCBA@?>=<;:98765
                         6789:;<=>?@ABCDEFGHIJKLKJIHGFEDCBA@?>=<;:9876
                        789:;<=>?@ABCDEFGHIJKLMNMLKJIHGFEDCBA@?>=<;:987
                       89:;<=>?@ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA@?>=<;:98
                      9:;<=>?@ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA@?>=<;:9
                     :;<=>?@ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA@?>=<;:
                    ;<=>?@ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA@?>=<;
                   <=>?@ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA@?>=<
                  =>?@ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA@?>=
                 >?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>
                ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?
               @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@
              ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA
             BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCB
            CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDC
           DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFED
          EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE
         FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGF
        GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHG
       HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH
      IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJI
     JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ
    KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK
   LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONML
  MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONM
 NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPON
OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPO

3
কোনও ইচ্ছাকৃত প্রথম শ্বেতস্পেস-কেবল রেখা আছে?
অ্যাডমবার্কবার্ক

9
@ অ্যাডমবর্কবার্ক এটিই একটি স্থান কারণ এটি প্রথম এএসসিআইআই চর লোল
হাইপারনিউটারিনো

2
@ the4kman এবং <=>=<মাছ।
পিজ্জাপ্যান্টস 184

4
"আপনার অবশ্যই ASCII পাইলনগুলি নির্মাণ করুন!" শিরোনাম না থাকার কোনও কারণ আছে?
mattdm

3
@ মেট্টেম আমি এইচএনকিউ তালিকা থেকে এখানে এসেছি কারণ এর শিরোনামের কারণে এটি উত্সাহ পেতে পারে। সুন্দরভাবে সম্পন্ন.
টড উইলকক্স

উত্তর:


4

ক্যানভাস , 15 14 বাইট

0c[C²[j}¹m]/││

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

নোট করুন যে এটি তৈরি করার সময় আমি একটি দম্পতি অন্তর্নির্মিত ( এবং ) যুক্ত করেছি কারণ ক্যানভাসে এএসসিআইআই / ইউনিকোডের আগে কোনও বিল্ট-ইন ছিল না ...

ব্যাখ্যা (কিছু অক্ষর মনোস্পেস দেখার জন্য প্রতিস্থাপন করা হয়েছে):

0c              push the charcode of "0" - 48
  {       ]     map over 1..48
   C              push the ASCII characters
    ²[ ]          repeat by the counter (0-indexed)
      j             remove the last character
        ¹m        mold to the length of the counter
           /    pad each line with spaces so it looks like a diagonal
            ││  palindromize the whole thing horizontally

16

শক্তির উৎস , 73 বাইট

' '*48;46..0|%{" "*$_+-join[char[]](($x=79-$_)..($y=$x+$j++)+(++$y)..$x)}

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

প্রথম শ্বেতক্ষেত্র-কেবল লাইন আউটপুট দেয়, তারপরে থেকে লুপ 46হয় 0। প্রতিটি পুনরাবৃত্তি, শূন্যস্থানের সাথে সম্পর্কিত সংখ্যার আউটপুট দেয় এবং তারপরে কিছু গণনার মাধ্যমে উপযুক্ত চিহ্নগুলির অ্যারে -joinএকসাথে charপ্রযোজ্য।


1
আপনি প্রথম লাইনের একটি স্পেস অক্ষর অনুসারে 47 স্পেস হিসাবে বিবেচনা করে কিছু গণনা সংরক্ষণ করতে পারবেন?
Riking

@ রাইকিং এটি করার জন্য, আপনাকে কীভাবে চার-অ্যারে তৈরি করা হয় কেবল 3 বা ততোধিকের পরিবর্তে একটি আইটেম তৈরি করার জন্য বিশেষ কেসটি দরকার। ফলস্বরূপ, স্পেস-কেবলমাত্র পৃথক পৃথকভাবে শুধুমাত্র লাইনের বিশেষ ক্ষেত্রে এটি খাটো।
অ্যাডমবার্কবার্ক

11

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

E⁴⁸⮌✂γι⊕⊗ι‖O←

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

 ⁴⁸             Literal 48
E               Map over implicit range
      ι  ι      Current index
        ⊗       Doubled
       ⊕        Incremented
     γ          Printable ASCII
    ✂           Slice
   ⮌            Reverse
                Implicitly print each slice on separate lines
          ‖O←   Reflect with overlap

5
আউটপুটটি আমার কাছে ভুল বলে মনে হচ্ছে।
মিঃ এক্সকোডার

1
@ মিঃ এক্সকোডার উঘ, ক্লাসিক অফ-বাই -1 ত্রুটি ...
নীল

8

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

i=48
while i:i-=1;r=range(79-i,127-i*2);print' '*i+bytearray(r+r[-2::-1])

এটি অনলাইন চেষ্টা করুন! অরাজকতা গল্ফ থেকে ক্রসপোস্টেড (দেখুন আমার জমা দেখুন )।

দ্রুত পোস্ট মর্টেম বিশ্লেষণ: xnor এবং dianne সঠিক একই সমাধানটি আবিষ্কার করেছে । ইবিচোকনিয়াল একটি 71 বাইট সমাধান জমা দেয় যা ম্যাচগুলি উন্নত করে 70 বাইটে উন্নীত করে । তারা "বর্তমান লাইন" পরিবর্তনশীল রেখে এবং চতুরতার সাথে এটি আপডেট করে পুরোপুরি (যা bytearrayদীর্ঘ) বা ''.join(map(chr,…))(যা আরও দীর্ঘ) সম্পূর্ণভাবে ডিল করা এড়ায় avoid





4

কমন লিস্প , 110 বাইট

(dotimes(i 48)(dotimes(j 96)(princ(if(>(abs(- j 48))i)" "(code-char(+(-(* i 2)(abs(- j 48)))32)))))(princ"
"))

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

ব্যাখ্যা

(dotimes(i 48)                   ;; for i from 0 up to 47
    (dotimes(j 96)               ;; for j from 0 up to 95
        (princ                   ;; print
            (if(>(abs(- j 48))i) ;; if abs(j - 48) > i
                " "              ;; print " "
                (code-char(+(-(* i 2)(abs(- j 48)))32)) ;; else print appropriate character
            )
        )
    )(princ"
") ;; print newline
)

3

ভিবিএ, 71 বাইট

একটি অনামী ভিবিই তাত্ক্ষণিক উইন্ডো ফাংশন যা কনসোলটিতে কোনও ইনপুট এবং আউটপুট নেয় না।

For i=0To 47:?Spc(47-i);:For j=-i To i:?Chr(32-Abs(j)+2*i);:Next:?:Next

3

রুবি , 70 বাইট

s=[*?\s..?~]*'';48.times{|i|puts s[i,i+1].rjust(48)+s.reverse[-2*i,i]}

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

সম্পূর্ণ মুদ্রণযোগ্য এএসসিআইআই স্ট্রিং তৈরি করে এবং তারপরে প্রয়োজনীয় সংখ্যক ফরোয়ার্ড (স্পেস সহ প্যাডযুক্ত) + এর পিছনে স্লাইস প্রিন্ট করে।



2

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

c;i;main(){for(i=0;i<48;++i){for(c=2*i-15;c<32+2*i;++c)putchar(c>31+i?c:32);for(;c>31+i;--c)putchar(c);putchar(10);}}

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

Ungolfed:

int ch;
int row;
int main(void) {
    for (row = 0; row < 48; ++row) {
        for (ch = 2*row-15; ch < 32 + 2*row; ++ch) {
            // The first character in the row is 2*row - 15 (row is zero-indexed)
            if (ch > 31+row)
                putchar(ch);
            else
                // If the current character is not in the pyramid, mask it with a space
                putchar(' ');
        }
        for (; ch > 31+row; --ch) {
            // Finish the other side of the pyramid
            putchar(ch);
        }
        putchar('\n');
    }
}




2

টি-এসকিউএল, 153 বাইট

DECLARE @ INT=33,@t CHAR(95)=''a:PRINT @t;
SET @t=LEFT(STUFF(STUFF(@t,63-@/2,2,''),46,0,CHAR(@-1)+CHAR(@)+CHAR(@+1)+CHAR(@)),33+@/2)
SET @+=2IF @<128GOTO a

রিটার্নগুলি কেবল প্রদর্শনের জন্য।

আমি পুরো স্ট্রিং (১3৩ টি অক্ষর) প্রি-কনস্ট্রাক্ট করার জন্য একটি লুপ এবং ফ্লাইতে এটি নির্মাণের জন্য নেস্টেড লুপ (168 টি অক্ষর) সহ বেশ কয়েকটি ধারণাগুলি চেষ্টা করেছি, তবে এটি সংক্ষিপ্ততম হিসাবে শেষ হয়েছিল।

মূলত, প্রতিটি লুপ আমি স্ট্রিংয়ের কেন্দ্রে 4 টি নতুন অক্ষর আঁকছি , তারপরে এসকিউএল ফাংশনটি ব্যবহার করে উভয় প্রান্ত থেকে অতিরিক্তগুলি ছাঁটাই করছিSTUFF()

ফর্ম্যাট এবং ব্যাখ্যা:

DECLARE @ INT=33,                      --Using a single counter for both rows and CHAR
        @t CHAR(95)=''                 --a non-null CHAR field will pre-fill with spaces
a:                                     --GOTO loop, shorter than a WHILE
    PRINT @t                           --duh
    SET @t = LEFT(                     --lops off the character at the end
            STUFF(                     --crams 4 new characters in the middle
            STUFF(@t, 63-@/2, 2, '')   --snips out a space and the leading character
                 ,46, 0, CHAR(@-1) + CHAR(@) + CHAR(@+1) + CHAR(@))
                 ,33 + @/2)            --rest of the LEFT()
    SET @+=2
IF @<128 GOTO a

2

জে , 47 44 বাইট

(,.~}:@|."1)(1+i.48)([|.@{.}.)"0 1 u:31+i.96

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

টেম্পলেটটির জন্য কনর ও ব্রায়েনকে ধন্যবাদ! অবৈধ সমাধানটি নির্দেশ করার জন্য ফ্রাউনফ্রোগকে ধন্যবাদ।


1
সম্ভবত এটি আরও সহজেই সংশোধনযোগ্য: অনলাইনে চেষ্টা করে দেখুন!
কনর ওব্রায়েন

@ কনর ও ব্রায়েন - টেম্পলেটটির জন্য আপনাকে ধন্যবাদ, আমি লিঙ্কটি আপডেট করেছি।
গ্যালেন ইভানভ

শীর্ষে একটি অতিরিক্ত লাইন প্রিন্ট করে।
ফ্রাউনফ্রোগ

@ ফ্রভনিফ্রোগ ওহ, কেবলমাত্র এখন দেখছি যে কেবলমাত্র নতুন লেলাইনের অনুমতি রয়েছে, নেতৃত্ব দিচ্ছেন না। আমি এটি ঠিক করার চেষ্টা করব।
গ্যালেন ইভানভ

@ ফ্রাউনফ্রোগ - স্থির এবং সামান্য গল্ফড
গ্যালেন ইভানভ

2

রুবি, 59 বাইট

48.times{|i|-47.upto(i){|c|putc~c<i ?32-c.abs+2*i:32};puts}

অ্যানাগল থেকে আমার উত্তর থেকে ক্রস পোস্ট।


2

জাপট -R, 18 15 বাইট

একটি অতিরিক্ত শীর্ষস্থানীয় নতুন লাইনের অনুমতি থাকলে 14 বাইট

#0õ_odH+ZÉ ¬êÃû

এটা পরীক্ষা করো


ব্যাখ্যা

#0                  :48
  õ                 :Range [1,48]
   _         Ã      :Pass each Z through a function
    o               :  Range [0,Z)
      H+ZÉ          :    To each add 32+Z-1
     d              :    Get the character at that codepoint
           ¬        :  Join to a string
            ê       :  Palinrdomise
              û     :Centre pad each element to the length of the longest element
                    :Implicitly join with newlines and output

2

জে ,  40 37  32 বাইট

40 অভিব্যক্তি u:30+2>.(+:@i.@(2&+)(-*(>+:))"0 _|@i:)47 গ্যালেন ইভানভ এবং + কনর ও ব্রায়েনকে তাদের সমাধানগুলির ধারণাগুলির জন্য ধন্যবাদ

ইকো অন্তর্ভুক্ত 37 echo u:32+|.(~.(>:*+:@[-])"0 _])|i:47

echo u:32+|.(~.(>:*[+-)"{])|i:47

মন্তব্যগুলি থেকে @ ফ্রাউনফ্রগ টিপস অন্তর্ভুক্ত করা হচ্ছে

Tio


আমি মনে করি না যে এক্সপ্রেশনগুলি বৈধ জমা রয়েছে।
LyricLy

@ লিরিক লাই, মতামত পরিবর্তিত হয়েছে বলে মনে হচ্ছে যেহেতু আমি এই ফর্মটিতে আর একটি জে উত্তর দেখতে পেয়েছি .. যাইহোক আমাকে আরও 8 বাইট শেভ করার জন্য ধন্যবাদ জানাই .. এখন আমার কাছে "প্রতিধ্বনি" যুক্ত করার জায়গা আছে: আশা করি আপনি খুশি হবেন:)
জয়প্রিচ



সুন্দর .. এই টিপসটির জন্য ধন্যবাদ
@


1

পাইথন 2 , 98 88 বাইট

@ মিস্টার এক্সকোডারকে -1 বাইট ধন্যবাদ

i=32
exec"print''.join(chr(i+i-32-abs(j))for j in range(32-i,i-31)).center(95);i+=1;"*48

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


-i+32=> 32-iএবং আপনি বাইটগুলি সংরক্ষণ করার ' '*(79-i)পরিবর্তে ব্যবহার করতে পারেন .center(95)
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার ধন্যবাদ! ' '*(79-i)+
বাইটসটি

1

রুবি , 78 বাইট

s=*32;48.times{puts (s.map(&:chr)*'').center 95;c=*s[0]+1;s=c+s.map{|x|x+2}+c}

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

পুরো প্রোগ্রাম। Ungolfed:

s=*32;                              # s is an array of integers
48.times{                           # Repeat 48 times:
  puts (s.map(&:chr)*'').center 95; # Turn each int to a char, join, center, and print
  c = *s[0] + 1;                    # c is a singleton array. It will bookend the next line
  s = c + s.map{|x|x+2} + c         # Add 2 to each element of s before adding the bookends
}



1

My-বেসিক , 97 বাইট

একটি অনামী এমওয়াই-বেসিক প্রতিক্রিয়া যা কনসোলটিতে কোনও ইনপুট এবং আউটপুট নেয় না

For i=0 To 47
For j=i To 47
Print" "
Next
For j=-i To i
Print Chr(32-Abs(j)+2*i)
Next
Print;
Next

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

-1 বাইট জোনাথন ফ্রেচের জন্য ধন্যবাদ


1
Print " "-> Print" "
জোনাথন ফ্রেচ

@ জোনাথনফ্রেচ
টেলর স্কট


1

গোল> <> , 29 বাইট

`0FaLssLF:P|LF:M|`/L-R` lRo|;

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

কিভাবে এটা কাজ করে

`0FaLssLF:P|LF:M|`/L-R` lRo|;

`0F                        |;  Repeat the following 48 times and halt...
   a                           Push 10 (\n)
    Lss                        Push L(loop counter) + 32
       LF:P|                   Repeat "Clone the top and increment" L times
            LF:M|              Repeat "Clone the top and decrement" L times
                 `/L-R`        Push 32 (space) 47-L times (space is significant)
                        lRo    Print everything as char, from the top,
                               until the stack is empty

1

টিসিএল , 129 122 118 117 বাইট

time {incr i;set j -48;set a {};time {set a $a[format %c [expr abs([incr j])>=$i?32:$i*2-abs($j)+30]]} 96;puts $a} 48

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

ব্যাখ্যা

time { # for i from 0 up to 47
    incr i
    set j -48
    set a {}
    time { # for j from -48 up to 47
        # add next character to a
        set a $a[format %c [expr abs([incr j])>$i?32:$i*2-abs($j)+32]]
    } 96
    puts $a # print a
} 48

1

সি (জিসিসি) 199 বাইট

#include<stdio.h>
int i,j=32,k=32,l=49;int main(){while(k<127){for(i=0;i<l;++i)printf(" ");for(i=j;i<k;++i)printf("%c",i);printf("%c",k);for(i=k-1;i>=j;--i)printf("%c",i);printf("\n");j++;k+=2;l--;}}

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

সমস্ত সহায়তার জন্য পিকার্ড এবং পুনপুন 1000 কে ধন্যবাদ


@ পিকার্ড আমি শূন্যস্থানগুলি সরিয়েছি। আমি আরও একটি বৈশ্বিক পুনরাবৃত্তাকার ভেরিয়েবল সঙ্গে minify করতে পারে।
জোনাথন ল্যান্ড্রাম

@ পাইকার্ড আমি এটি আমার ফোনে সম্পাদনা করেছি; বুঝতে পারিনি আমি একটি ফাঁকা রেখা ছেড়ে দিয়েছি
জনাথন ল্যান্ড্রাম

1
কমাগুলির পরে প্রিন্টফ কলগুলিতে অপ্রয়োজনীয় স্পেস রয়েছে এবং ভেরিয়েবলের নামগুলি একটি অক্ষরে ছোট করা যেতে পারে। এছাড়াও আপনি টিআইও লিঙ্ক এবং আসল বাইট গণনা অন্তর্ভুক্ত করতে পারলে এটি দুর্দান্ত হবে। আপনার বর্তমান কোড টিআইও
PunPun1000

ঠিক আছে, আমি এটি আরও কিছুটা চেপে ধরেছি, আমার মনে হয় এটিকে আরও সঙ্কুচিত করার জন্য আমাকে অ্যালগরিদমটি পরিবর্তন করতে হবে
জোনাথন ল্যান্ড্রাম

1

হাস্কেল, ১০২ বাইট

main=putStr$do
i<-[48,47..0]
let l=replicate i 32++[79-i..126-i*2]
map toEnum$l++tail(reverse l)++[10]

আমি যে জিনিসগুলি চেষ্টা করেছি সেগুলি ছোট ছিল না:

  • চরিত্র লিটারেল পরিপ্রেক্ষিতে সবকিছু প্রকাশ করে এবং succবা predসংরক্ষণ করতেmap toEnum
  • ব্যবহার না করে নিম্নমুখী সীমা রচনা করা reverse
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.