Cetak Negatif Kode Anda


100

Pertimbangkan kuadrat karakter ASCII yang dapat dicetak (titik kode 0x20 hingga 0x7E) untuk panjang sisi N , seperti yang berikut (di sini, N = 6 ):

=\    
 g \  
7     
m+y "g
  L ~ 
e> PHq

Kami juga mengharuskan setiap baris dan setiap kolom mengandung setidaknya 1 spasi dan 1 karakter non-spasi . (Contoh di atas memuaskan ini.)

Kami mendefinisikan negatif dari persegi seperti itu, menjadi persegi dengan ukuran yang sama, di mana setiap ruang diganti dengan non-ruang dan sebaliknya. Misalnya, berikut ini akan menjadi negatif yang valid dari contoh di atas:

  1234
a b cd  
 ZYXWV
   !  
{} [ ] 
  ?   

Pilihan karakter non-spasi tidak relevan (asalkan karakter tersebut berasal dari rentang ASCII yang dapat dicetak).

Tantangan

Anda harus menulis sebuah program, dengan kode sumber kuadrat dengan panjang sisi N> 1 , yang mencetak negatif dari dirinya sendiri ke STDOUT. Ruang - ruang tambahan harus dicetak. Anda mungkin atau mungkin tidak mencetak satu baris baru.

Aturan quine yang biasa juga berlaku, jadi Anda tidak boleh membaca kode sumber Anda sendiri, secara langsung atau tidak langsung. Demikian juga, Anda tidak boleh menganggap lingkungan REPL, yang secara otomatis mencetak nilai dari setiap ekspresi yang dimasukkan.

Pemenangnya adalah program dengan termurah panjang sisi N . Dalam hal seri, pengajuan dengan karakter non-spasi paling sedikit dalam kode sumber menang. Jika masih ada seri, jawaban paling awal menang.


Apakah nilai pengembalian suatu fungsi diterima atau haruskah itu dicetak ke STDOUT?
Paul Guyot

1
@PaulGuyot Untuk tantangan ini, harap tetap berpegang pada program penuh dan STDOUT (seperti itu, secara longgar, varian quine).
Martin Ender

Anda harus mengklarifikasi bahwa ukuran papan harus N> 0 . Saya melihat bahwa contoh Anda menentukan N> 1 (dan apakah maksud Anda N> = 1 ?), Tetapi ini tidak sesuai aturan.
Imallett

2
@imallett tersirat oleh "Kami juga mengharuskan setiap baris dan setiap kolom mengandung setidaknya 1 spasi dan 1 karakter non-spasi". Tunggu. Tidak. Poin bagus. Itu menyiratkan N == 0 || N> 1.
John Dvorak

1
@ jpcooper Ya, itu kotak, tetapi tidak memuaskan "Kami juga mengharuskan setiap baris dan setiap kolom mengandung setidaknya 1 spasi dan 1 karakter non-spasi." karena kolom m pertama tidak mengandung spasi, dan kolom n terakhir tidak mengandung spasi.
Martin Ender

Jawaban:


18

CJam, 4 x 4 (8 tanpa spasi)

 L _
{ _ 
 _ }
_ p 

Cobalah online di juru bahasa CJam .

Keluaran

{ _ 
 _ }
{ _ 
 _ }

Bagaimana itu bekerja

  • Lmendorong array kosong dan _mendorong salinannya.

  • Blok

    { _ 
     _ }
    

    mendorong blok itu di tumpukan.

  • _mendorong salinan blok kode dan pmencetaknya, diikuti oleh umpan baris.

  • Akhirnya, interpreter mencetak semua item yang tersisa di stack: dua array kosong yang tidak mempengaruhi output, dan blok kode asli.

Versi alternatif

 L ~
{ _ 
 p }
_ ~ 

Cobalah online di juru bahasa CJam .

Keluaran

{ _ 
 p }
{ _ 
 p }

Bagaimana itu bekerja

  • Lmendorong array kosong dan ~membuangnya. Tumpukan kosong lagi.

  • Blok

    { _ 
     p }
    

    mendorong blok itu di tumpukan.

  • _mendorong salinan blok dan ~menjalankan salinan.

    Bagian _dalam salinan blok akan mendorong salinan blok asli, yang pakan dicetak, diikuti oleh umpan baris.

  • Akhirnya, penerjemah mencetak item yang tersisa di tumpukan: blok kode asli.


104

Perl, 7 × 7 (42 non-spasi)

for$i( 
1..56 )
{$_= $i
%8? $i%
7? $":7
: $/;1;
 print}

Keluaran:

      7
     7 
    7  
   7   
  7    
 7     
7      

10
Ini adalah salah satu bagian kode paling keren yang pernah saya lihat dalam waktu yang lama.
Kasran

Mudah dan sederhana, tetapi cukup membosankan. Masih +1.
Nova

8
Akan lebih keren lagi jika ditampilkan 7terbuat dari 7. :)
AL

1
@AL Hanya perlu 8 karakter lagi (7 spasi dan baris baru).
Qix

77

CJam, 4X4 ( 12 10 spasi)

 6, 
SS +
* 4/
 N* 

Keluaran:

0  1
  2 
 3  
4  5

Versi sebelumnya dengan 12 non-spasi:

 4a4
* 4S
** 4
/N* 

Dan hasilnya

4   
 4  
  4 
   4

Seperti yang ditunjukkan oleh Martin, versi ini memiliki

  • 4 ruang,
  • 4 * ,
  • 4 4 ,
  • 4 karakter lainnya, dan
  • 4 4 sebagai output

;)

Cobalah online di sini


22
Ini juga memiliki 4 upvotes, tapi saya akan merusaknya untuk Anda. Maaf! :-D
ossifrage mual

7
Mungkin kita bisa mencapai 44? +1 :)
Gagang Pintu

4
Pertahankan kecepatan hingga 4 ^ 4
Pengoptimal

17
Bukankah 4 ^ 4 == 0? ;)
zennehoy

1
Ya, saya tidak suka fakta bahwa XOR bitwise mencuri simbol yang seharusnya digunakan untuk eksponen. Membaca kode mudah dibaca, jujur.
SuperJedi224

50

Marbelous - 16x16

....@0..@1....  
@3..0A08..@2  ..
/\--....>1  ..Hp
..@2..\\  =0@3..
ss..//  --\\\\..
@0/\  @1/\Hp..!!
:s  #the-cake-is
  2020#a-pie/lie

Uji di sini! Spasi sebagai kosong, papan silindris, dan termasuk perpustakaan semua harus diperiksa.

Keluaran

              07
            06  
          05    
        04      
      03        
    02          
  01            
01              

Penjelasan

Ada dua papan di sini: papan utama (ditunjukkan di bawah), dan sspapan, yang tidak mengambil input dan output dua spasi (0x20) ke STDOUT.

Sel kosong sama dengan a .., dan apa pun setelah a #adalah komentar.

Gambar papan

Setiap centang, ssmenghasilkan dua spasi untuk STDOUT.

Jalur hijau adalah loop sederhana yang menampilkan baris baru (0x0A) pada akhir setiap centang ke-7.

Jalur biru akan menampilkan angka-angka ( Hpmencetak marmer sebagai dua digit hex) yang ada di output, pada akhir setiap centang ke-6.

Setelah kita mencetak 01sekali, loop berakhir, dan bergerak menyusuri jalan merah, yang menduplikasi marmer ini.

Satu duplikat dicetak (yang kedua 01), dan yang lainnya dikirim ke jalur hitam, yang mengakhiri papan di !!sel. Karena lokasi yang Hpdigunakan dalam cetakan terakhir ini, 01muncul sebelum dua spasi kutu yang sama, bukan setelah, perilaku setiap Hppanggilan lainnya .


9
Upvoting untuk representasi grafis dari sumber.
Naik

35

Python - 11x11

import re
[print(
    re.sub(
"0",   " ",
bin(x)[
2:].zfill(
11)))for x
in[19,15,
1920,116,
15,1,5,3,
3,3, 67]]

Keluaran

      1  11
       1111
1111       
    111 1  
       1111
          1
        1 1
         11
         11
         11
    1    11

Ini solusi yang cukup berantakan dan membosankan, tapi saya hanya berpikir saya akan menunjukkan bahwa ...

  1. Itu bisa dilakukan dengan Python
  2. Jika Anda dapat memampatkan informasi tentang kode Anda lebih pendek dari kode Anda, maka Anda dapat melakukan sesuatu seperti ini :)

Solusi ini mengambil keuntungan dari kenyataan bahwa, jika Anda berada dalam sepasang tanda kurung dengan Python, maka Anda dapat membagi kode Anda menjadi beberapa baris dan menambahkan ruang secara sewenang-wenang tanpa mendapatkan IndentationError. Cara lain untuk melakukan sesuatu seperti ini adalah dengan mengakhiri garis dengan garis miring terbalik.


33

Python - 7x7 (37 non-spasi)

print( 
'%+7s' 
'\n'%1 
*6+'%' 
'-7s'% 
111111 
      )

Keluaran

      1
      1
      1
      1
      1
      1
111111 

Menggunakan %operator pemformatan string lama Python untuk melakukan pekerjaan: +7dan -7menjaga pembenaran kanan / kiri, dan ruang terakhir yang cocok dengan tanda kurung penutup untuk printkhususnya. Dalam menyiapkan format string, kami juga punya

  • penggabungan string string literal secara otomatis, dan
  • pengulangan string dengan multiplikasi (memberi kami beberapa bidang pengganti dengan harga satu)

18

JavaScript (9x9)

 i=9;q=""
; for(;++
i< 91;){;
var q=q+(
!(i% 10.0
)?1:" ");
;i%9|| (q
+="\n") }
alert(q) 

Keluaran

1        
 1       
  1      
   1     
    1    
     1   
      1  
       1 
        1

Catatan

Saya membuat dan bermain golf (dengan kemampuan terbaik saya) kode untuk kotak dengan diagonal dari berbagai ukuran n:

q="";for(i=***n***;++i<***n^2+n+1***;i%***n***||(q+="\n"))q+=i%***n+1***?"0":1

mengganti nomor *** asdf *** dengan konstanta tergantung pada panjang sisi n, misalnya untuk n = 6:

q="";for(i=6;++i<43;i%6||(q+="\n"))q+=i%7?" ":1

Tapi, meskipun kode itu panjang 46, saya tidak bisa mendapatkan ruang konstan untuk sejajar dengan spasi di diagonal kode sampai sebesar 9x9, dengan garis terbuang (yang ke-5)

Sunting: Diubah untuk menambahkan lansiran (). Sebelum:

 i=9;q=""
; while((
++ i)<91)
{q= q+""+
""+( "")+
(!((i %10
))?1:" ")
;i%9||( q
+="\n")} 

Ahh, ya, oops, aku mengerti maksudmu. Saya sedang memperbaikinya sekarang, maaf.
Kuilin Li

Anda punya beberapa variabel global unitial di sana: P
Tomáš Zato

16

CJam, 5x5, 12 tanpa spasi

Bukan pemenang, tetapi saya ingin menambahkan kiriman yang agak kecil dan jarang , karena sebagian besar jawaban hanya mencetak diagonal.

 1 ]
D * S
 * 5
/ N *
 1 ; 

cetakan

1 1 1
 1 1 
1 1 1
 1 1 
1 1 1

Uji di sini.

Dua karakter terakhir dari kode, tidak melakukan apa-apa, jadi sebenarnya hanya memiliki 10 byte kode nyata. Untuk grid yang lebih kecil, saya bahkan bisa menguranginya dengan dua byte menjadi 8, tapi itu tidak sesuai pada 3x3, dan kode ini tidak berfungsi untuk ukuran grid yang genap.

Bagaimana itu bekerja:

1]           "Push [1].";
  D*         "Repeat 13 times.";
    S*       "Riffle with spaces.";
      5/     "Split into runs of five elements.";
        N*   "Join those with line breaks.";
          1; "Push and pop a 1. No-op.";

Sejauh ini jawaban CJam dan Pyth yang meledak adalah hal favorit saya di situs. Dapatkan upvote, Reddit-style.
Soham Chowdhury

14

Befunge , 9x9

Saya tidak tahu mengapa saya melakukan ini. Butuh cara terlalu lama. Saya sakit kepala hebat sekarang.

8>v_20gv 
v9<^v#<4 
1@,/<>^6 
v1,*$:<p 
->,!-^87 
:^*25<^g 
_88g,^^4 
9vp\v#6< 
        @

Keluaran:

        @
        @
        @
        @
        @
        @
        @
        @
$$$$$$$$ 

Beberapa penjelasan

Kode ini digunakan guntuk membaca @karakter dari grid "on the fly" (dan juga ruang terakhir, yaitu @ / 2), dan puntuk memodifikasi loop untuk menulis baris output terakhir.

Setiap karakter tunggal pada kode digunakan di beberapa titik, baik sebagai kode atau sebagai data ( 9dan @pada dua baris terakhir).

Saya pada dasarnya harus melakukan banyak solusi untuk membuat kode berfungsi. Penunjuk instruksi melakukan banyak persimpangan selama eksekusi, di mana beberapa dilompati. (Saya tidak bisa menggunakan instruksi apa pun di sana untuk arah yang berbeda karena mereka akan mengganggu. Tidak ada NOP.) Di tempat lain saya menggunakan kembali karakter yang sama atau hanya melepaskannya (lihat $:di tengah).

Saya juga melakukan beberapa pekerjaan kreatif di stack:

  • Ketika loop penulisan karakter (bagian dalam) berakhir (semua spasi dilakukan untuk baris ini), stack memiliki n,0. Saya kemudian harus mengurangi n. Solusi yang jelas adalah $1-, tetapi saya berhasil mempersingkat dengan menggunakan !-.
  • Ketika loop tulisan luar (berakhir) berakhir (semua garis normal tercetak), stack memiliki a 0. Saya kemudian mengatur pengubah kode ( 20g46p7g46\p) untuk menggunakannya 0, alih-alih membuang 2 karakter $0.

Befunge selalu mendapat +1 dari saya. Bagus dengan !-; itu sesuatu yang akan saya lakukan. Fakta menyenangkan: Di Funge-98, zadalah NOP.
Kasran

@ Kasran Ya. ztidak terdaftar di wiki dan saya menggunakan ini untuk pengkodean, yang berarti tidak ada perintah yang membalik arah IP. Cukup banyak harus refactor 70% dari kode karena satu tempat yang seharusnya NOP.
PurkkaKoodari

Nah, keuntungan melakukan itu adalah bahwa kode Anda akan berjalan di Befunge-95 (yang saya tidak percaya memiliki NOP non-ruang) dan juga 98; karena jauh lebih sulit untuk menggunakan 95, saya selalu menemukan jawaban itu sangat mengesankan.
Kasran

13

Python 3, 8x8

Ada 50 karakter tanpa spasi dan 14 spasi. Baris terakhir memiliki satu karakter yang tidak berguna, tetapi yang lainnya diperlukan.

(*_,q,n 
)=p=''' 
       p
'''[2:] 
print(p 
*2+q*7, 
n+p*4+p 
[0:-1]) 

Keluaran:

       p
       p
ppppppp 
       p
       p
       p
       p
       p

2
Baru saja mencoba bermain-main dengan (a,*b,c)="12345"... tugas yang
berkilau

@ sp3000 jenis haskell-esque. saya menggunakan cara python lebih dari haskell, bagaimana saya tidak tahu ini
undergroundmonorail

11

Ruby, 8x8

 (0...8)
. map(){
|x |$><<
32. chr*
x+[x ]*'
'<<32 .\
chr*(7 -
x)+?\n} 

Keluaran:

0       
 1      
  2     
   3    
    4   
     5  
      6 
       7


9

C ++, 12x12

Sunting: Jadi, saya menjadi sedikit terobsesi dengan tantangan ini dan berhasil menurunkannya dari 17x17 menjadi 12x12. Butuh beberapa saat bagi saya untuk menyadari bahwa saya dapat menggunakan /**/sebagai pembatas token. Kode ini mengambil keuntungan dari fakta bahwa sambungan baris masih berfungsi di Dentang dengan spasi setelahnya, meskipun itu memberikan peringatan dan merusak pewarnaan kode Xcode.

#include<c\ 
stdio>/***/ 
int/**/mai\ 
n(){for(in\ 
t/**/i=0;i\ 
<12;++i)pr\ 
intf(i^8?"\ 
           \
|\n":"~~~~\ 
~~~~~~~\x2\ 
0\n");}/**/ 

Keluaran:

           |
           |
           |
           |
           |
           |
           |
           |
~~~~~~~~~~~ 
           |
           |
           |

5

Befunge-98 , 8x8 (56 non-spasi [11 nops])

Catatan: Demi kepentingan orang-olah-raga yang baik, ini membaca sumbernya sendiri melalui ', menjadikannya cheat-quine bagi sebagian orang. Baca perdebatan di sini .

Program

 07'?>:8v
v y+da:%<
<v ':vj!-
,+# '<zzv
v1#a vj!<
>z,\1 -\v
z>+,$v z<
1_@#:<v -
zzzzzv<z 

Keluaran

(       
 ,      
  &     
   %    
    $   
     #  
      " 
       !

Penjelasan

Versi un-golfed

07'?>:8%:ad+y-!jv>'n,$v
  !jv   a,\1-\v > 's,  
    >         >       v
    v-1_@#:           <

(non-ruang dan ruang diganti dengan 'n dan untuk dibaca.)

Solusi ini didasarkan pada fakta bahwa menggunakan indeks [0, lebar ^ 2) mod, lebar kuadrat dapat memberi tahu Anda jika Anda berada di ujung baris atau di diagonal. Karena semua ruang ditempatkan di sepanjang diagonal, mudah untuk mengetahui kapan harus mencetak non-spasi!

Dalam Pseudocode

const int WIDTH = 8
push 0    //Because of the way the 'y' instruction works when picking
int row=7 //8-1 rows
int i=63  //Starting at the end allows for the cheaper i != 0
do
{
    pick variable row from the stack bottom + 1//ad+y
    if(i%WIDTH == row)
    {
        print non-space
    }
    else
    {
        print space
        if(i%WIDTH == 0)
        {
            print new-line
            --row
        }
    }
  --i
}
while(i != 0);

Diskusi

Saya sangat bangga akan hal itu, meskipun saya berharap bisa membuat setiap non-ruang juga non-nop. Saya juga bangga bahwa saya tidak menggunakan standar Befunge get-increment-put! Ini mencetak simbol yang berbeda untuk non-ruang karena saya punya ruang untuk itu dan tidak ingin membosankan.

Cobalah di Windows dengan BefungeSharp !


4

CJam, 4 x 4 (8 tanpa spasi)

 N a
` S 
 * N
X $ 

Cobalah online di juru bahasa CJam .

Keluaran

[ " 
 " ]
[ " 
 " ]

Bagaimana itu bekerja

  • Nmendorong linefeed sebagai string tunggal. amembungkus string itu dalam sebuah array.

  • ` memeriksa hasilnya, yaitu, ia mendorong representasi string dari array.

    Ini hasilnya:

    ["
    "]
    
  • S*bergabung dengan string yang dihasilkan (array karakter), memisahkan elemen-elemennya menggunakan spasi. Dengan kata lain, itu menempatkan karakter spasi di antara semua pasangan karakter yang berdekatan dari string.

    Ini hasilnya:

    [ " 
     " ]
    
  • N mendorong linefeed lain.

  • X$ menyalin item tumpukan pada indeks 1 (menghitung dari atas), yaitu string multi-line.

  • Akhirnya, interpreter mencetak semua item pada stack: string multi-line asli, linefeed dan salinan string multi-line.


4

SOGL V0.12 , 2x2 (2 tanpa spasi)

2 
 ╚

Coba Di Sini!

Keluaran

 /
/ 

Penjelasan

Dalam SOGL semua baris kecuali yang terakhir menggantikan baris - ini menggantikan di mana saja dalam kode yang melanjutkan karakter terakhir dari baris dengan semuanya sebelumnya. SO baris pertama di sini adalah replace space with 2 in the next line.
Kemudian baris berikutnya - 2╚dijalankan: 2mendorong 2, dan menciptakan diagonal ukuran 2.


3

CBM BASIC v2.0 (8 × 8)

Peningkatan atas jawaban saya sebelumnya , menggunakan pendekatan yang sama sekali berbeda:

1s=56/8 
2?sP7); 
3?"?":: 
4s=s-+1 
5ifsgO2 
6?-8^6; 
7?sP1): 
       8

Keluaran:

       ?
       ?
       ?
       ?
       ?
       ?
       ?
-262144 

3

Ruby, 8x8 7x7

 print(
 (?f+"\
 "*6+?\
 )*6).!
 $><<"\
 f"<<!1
;      

Keluaran:

f      
f      
f      
f      
f      
f      
 ffalse

Versi sebelumnya, 8x8 dengan 20 spasi:

  puts((
  "ff"+#
  ?\s*6+
  ?\n)*7
  );$><<
  ?\s*2+
  ?f;p:p
.!

Keluaran:

ff     
ff     
ff     
ff     
ff     
ff
ff     
  ffalse

3

Pushy , persegi 4x4

Non-bersaing karena bahasa memposting tantangan:

Kode:

 H32
2 C4
:" } 
\o/

Output:

d   
 d  
  d 
   d

Cobalah online!

Karena spasi tidak relevan dalam Pushy, kode mudah diatur untuk mencocokkan negatif dari outputnya. Program sebenarnya terlihat seperti ini:

H      \ Push char 100, 'd'
32 2C  \ Push char 32, a space, and make 2 extra copies
       \ We now have the string 'd   '
4:     \ 4 times do:
  "    \   Print the string
   }   \   Cyclically shift it right, once

Garis miring terbalik memulai komentar, jadi jejaknya \o/hanya ada untuk menyelesaikan yang negatif, dan terlihat keren.


Atau, untuk skor yang sama, kami dapat memiliki solusi berikut:

Code    Output

 35;    #
3 2j     #
2C 4      #
:"}        #

K 36     #
33 2      #
Ct4        #
 :}"    #

3

Haskell, 10 × 10

main=let{ 
0&c='\32' 
!c;n&c=c! 
'\32'>>(n 
-1)&c;a!b 
=putStrLn 
$(b<$[1.. 
10])++[a] 
}in(9&'*' 
         )

Menentukan fungsi pembantu a ! byang mencetak garis formulir bbbbbbbbba, dan fungsi rekursif n & cyang mencetak ngaris-garis formulir ccccccccc␣diikuti oleh satu baris formulir ␣␣␣␣␣␣␣␣␣c.

Menggunakan <$( fmap const, lagi) pada rentang untuk mengulangi karakter. Perhatikan bahwa <$hanya tersedia tanpa impor sejak GHC 7.10, yang memposting tanggal tantangan ini. Saya tidak sepenuhnya yakin apakah ini membuat pengiriman ini tidak bersaing.

Tidak ada yang benar-benar menarik dengan pilihan tata letak atau algoritma di sini; Saya tidak punya banyak byte untuk cadangan dan hanya beruntung orang bisa mendapatkan garis istirahat terjadi di sekitar putStrLncara mereka melakukannya.



3

05AB1E , 3x3 (6 byte tanpa spasi )

 3Ð
Λ q
°° 

Keluaran:

3  
 3 
  3

Cobalah online.

Penjelasan:

3Ð       # Push three 3s to the stack
  Λ      # Canvas with parameters num; filler; pattern
         #  num: The amount of characters to display (3)
         #  filler: The character to display ('3')
         #  pattern: The available options are single-digit integers in the range [0,7]
         #           indicating the direction to print in.
         #           (Option 3 is a top-left to bottom-right diagonal line)
    q    # Exit the program
°°       # no-ops to complete the pattern

2

Perl, 6x6 (26 non-spasi)

Saya menghabiskan whlie melihat melalui ini dan yakin akan ada solusi Perl lebih kecil dari 7x7 entah bagaimana ... Tantangan yang sangat menyenangkan! Solusi ini membutuhkan -E.

say+( 
$"x5, 
"5$/" 
)x5,5 
x5,$" 
     ;

Pemakaian:

perl -E 'say+( 
$"x5, 
"5\n" 
)x5,5 
x5,$" 
     ;'

Keluaran:

     5
     5
     5
     5
     5
55555 

2

CBM BASIC v2.0 (9 × 9)

0dA8,7,6 
1dA5,4, 3
2dA2,1 ,0
3rEs: rem
4?sP s)::
5:? "*";:
6p =8---s
7 ?sPp):?
 8ifsgO3:

Keluaran:

        *
       * 
      *  
     *   
    *    
   *     
  *      
 *       
*        

1

C (gcc) , 7x7 8x8

EDIT: Versi sebelumnya memiliki perilaku yang salah.

 main(i)
{ for(;i
<9 ;pri\
ntf ("%\
*d%" "*\
c",i, 1,
9-i,10 )
,i++);} 

Cobalah online!


" Kami juga mengharuskan setiap baris dan setiap kolom mengandung setidaknya 1 spasi dan 1 karakter non-spasi . " Kolom pertama Anda tidak memiliki karakter non-spasi.
Kevin Cruijssen

@KevinCruijssen Entah bagaimana saya merindukan kriteria kolom, jadi mereka semua salah. Akan membuat kembali ketika saya memiliki komputer nyata di tangan.
gastropner

1

Jelly , 4 x 4 (12 tanpa spasi)

 4=þ
¢ +⁴
¢+ ⁴
¢ỌY

Cobalah online!

Keluaran:

!   
 !  
  ! 
   !

Ini sangat menyenangkan.

Bagaimana itu bekerja

 4=þ    Link 1 (nilad): Generate an identity matrix of size 4
¢ +⁴    Link 2 (nilad): Add 16 to above
¢+ ⁴    Link 3 (nilad): Add 16 again
¢ỌY     Main link (nilad): Convert the above to ASCII chars, and join by newline

Bagian yang mudah: Jelly mengabaikan spasi putih (selama hanya satu byte builtin yang digunakan).

Bagian tersulit: Setiap baris dalam Jelly adalah tautan (atau fungsi) terpisah, jadi tidak terlalu pendek untuk menyebarkan pernyataan konstan dalam beberapa baris. Menggunakan string literal adalah kandidat yang baik, tetapi tidak tahu bagaimana menghasilkan yang negatif.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.