Wydrukuj negatyw swojego kodu


100

Rozważ kwadrat drukowanych znaków ASCII (punkty kodowe 0x20 do 0x7E) dla długości boku N , podobnie jak poniżej (tutaj, N = 6 ):

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

Wymagamy również, aby każdy wiersz i każda kolumna zawierały co najmniej 1 spację i 1 znak spacji . (Powyższy przykład to spełnia.)

Definiujemy negatyw takiego kwadratu, aby był kwadratem tego samego rozmiaru, w którym każda spacja jest zastępowana spacją i odwrotnie. Np. Następujący przykład byłby prawidłowym negatywem powyższego przykładu:

  1234
a b cd  
 ZYXWV
   !  
{} [ ] 
  ?   

Wybór znaków spacji nie ma znaczenia (o ile pochodzą one z drukowanego zakresu ASCII).

Wyzwanie

Musisz napisać program z kwadratowym kodem źródłowym o długości boku N> 1 , który wypisuje swój negatyw na STDOUT. Przestrzenie końcowe mają być drukowane. Możesz wydrukować pojedynczy znak nowej linii lub nie.

Obowiązują również zwykłe reguły quine, więc nie wolno czytać własnego kodu źródłowego, bezpośrednio lub pośrednio. Podobnie nie wolno zakładać środowiska REPL, które automatycznie drukuje wartość każdego wprowadzonego wyrażenia.

Zwycięzcą jest program o najmniejszej długości boku N . W przypadku remisu wygrywa zgłoszenie z najmniejszą liczbą spacji w kodzie źródłowym. Jeśli nadal jest remis, wygrywa najwcześniejsza odpowiedź.


Czy wartość zwracana przez funkcję jest akceptowana, czy powinna być wydrukowana do STDOUT?
Paul Guyot

1
@PaulGuyot W przypadku tego wyzwania trzymaj się pełnych programów i STDOUT (bo to luźno mówiąc, wariant quine).
Martin Ender

Należy wyjaśnić, że rozmiar planszy musi wynosić N> 0 . Widzę, że twój przykład określa N> 1 (a miałeś na myśli N> = 1 ?), Ale nie jest to zgodne z właściwymi regułami.
imallett

2
@imallett implikowany przez „Wymagamy również, aby każdy wiersz i każda kolumna zawierały co najmniej 1 spację i 1 znak spacji”. Czekać. Nie, nie jest. Słuszna uwaga. Oznacza to jednak, że N == 0 || N> 1.
John Dvorak

1
@ jpcooper Tak, to jest kwadrat, ale nie spełnia wymagań „Wymagamy również, aby każdy wiersz i każda kolumna zawierały co najmniej 1 spację i 1 znak spacji”. ponieważ pierwsze m kolumn nie zawiera spacji, a ostatnie n kolumn nie zawiera spacji.
Martin Ender,

Odpowiedzi:


18

CJam, 4 x 4 (8 spacji)

 L _
{ _ 
 _ }
_ p 

Wypróbuj online w interpretatorze CJam .

Wynik

{ _ 
 _ }
{ _ 
 _ }

Jak to działa

  • Lwypycha pustą tablicę i _wypycha jej kopię.

  • Blok

    { _ 
     _ }
    

    wypycha ten blok na stos.

  • _wypycha kopię bloku kodu i pdrukuje go, a następnie podaje wiersz.

  • Na koniec interpreter drukuje wszystkie pozostałe elementy na stosie: dwie puste tablice, które nie wpływają na dane wyjściowe, oraz oryginalny blok kodu.

Alternatywna wersja

 L ~
{ _ 
 p }
_ ~ 

Wypróbuj online w interpretatorze CJam .

Wynik

{ _ 
 p }
{ _ 
 p }

Jak to działa

  • Lwypycha pustą tablicę i ~zrzuca ją. Stos jest znowu pusty.

  • Blok

    { _ 
     p }
    

    wypycha ten blok na stos.

  • _wypycha kopię bloku i ~wykonuje kopię.

    _Wewnątrz kopii bloku pchnie kopię oryginalnego bloku, który pzostanie wydrukowana, a następnie wysuw.

  • Na koniec interpreter drukuje pozostały element na stosie: oryginalny blok kodu.


104

Perl, 7 × 7 (42 bez spacji)

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

Wynik:

      7
     7 
    7  
   7   
  7    
 7     
7      

10
To jeden z najfajniejszych fragmentów kodu, jaki widziałem od dłuższego czasu.
Kasran

Prosty i prosty, ale dość nudny. Nadal +1.
Nova

8
Byłoby jeszcze bardziej fajnie, gdyby wyświetlał 7zrobiony z 7. :)
AL

1
@AL Potrzebujesz tylko 8 dodatkowych znaków (7 spacji i nowej linii).
Qix,

77

CJam, 4X4 ( 12 10 spacji)

 6, 
SS +
* 4/
 N* 

Wynik:

0  1
  2 
 3  
4  5

Poprzednia wersja z 12 spacjami:

 4a4
* 4S
** 4
/N* 

I wynik jest

4   
 4  
  4 
   4

Jak zauważył Martin, ta wersja ma

  • 4 miejsca ,
  • 4 * ,
  • 4 4 ,
  • 4 inne postacie oraz
  • 4 4 jako wynik

;)

Wypróbuj online tutaj


22
Ma również 4 głosy poparcia, ale zamierzam to dla ciebie zepsuć. Przepraszam! :-D
squeamish ossifrage

7
Może uda nam się dostać do 44? +1 :)
Klamka

4
Utrzymuj tempo do 4 ^ 4
Optimizer

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

1
Tak, nie podoba mi się fakt, że bitowe XOR ukradło symbol, który powinien był zostać użyty dla wykładników. Szczerze mówiąc, pomniejsza czytelność kodu.
SuperJedi224

50

Cudowny - 16x16

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

Sprawdź to tutaj! Wszystkie spacje jako puste miejsca, cylindryczna tablica i biblioteki zawierają wszystkie elementy.

Wynik

              07
            06  
          05    
        04      
      03        
    02          
  01            
01              

Wyjaśnienie

Są tutaj dwie płyty: główna (pokazana poniżej) i sskarta, która nie przyjmuje żadnych danych wejściowych i wysyła dwie spacje (0x20) do STDOUT.

Pusta komórka jest równoważna a .., a wszystko po niej #jest komentarzem.

Zdjęcie tablicy

Każdy tyknięcie sswysyła dwie spacje do STDOUT.

Zielona ścieżka jest prostą pętlą, która generuje znak nowej linii (0x0A) na końcu każdego siódmego tiku.

Niebieska ścieżka wyświetli liczby ( Hpdrukuje marmur jako dwie cyfry szesnastkowe) obecne na wyjściu, na końcu każdego szóstego tyknięcia.

Po wydrukowaniu 01raz pętla kończy się i przesuwa się w dół czerwoną ścieżką, która powiela ten marmur.

Jeden duplikat jest drukowany (drugi 01), a drugi wysyłany czarną ścieżką, która kończy tablicę w !!komórce. Ze względu na położenie Hpużywane w tym ostatnim wydruku, 01pojawia się przed dwoma spacjami tego samego tika, a nie po zachowaniu każdego innego Hppołączenia.


9
Aktualizacja dla graficznej reprezentacji źródła.
Riking

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]]

Wynik

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

To dość niechlujne i nudne rozwiązanie, ale pomyślałem, że pokażę ...

  1. Można to zrobić w Pythonie
  2. Jeśli możesz skompresować informacje o swoim kodzie krótszym niż kod, możesz pobrać coś takiego :)

To rozwiązanie wykorzystuje fakt, że jeśli znajdujesz się w parze nawiasów w Pythonie, możesz podzielić swój kod na kilka wierszy i dowolnie dodać spacje bez uzyskania IndentationError. Innym sposobem zrobienia czegoś takiego jest zakończenie linii odwrotnym ukośnikiem.


33

Python - 7x7 (37 spacji)

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

Wynik

      1
      1
      1
      1
      1
      1
111111 

Wykorzystuje stare Pythona %operatora formatowania ciąg do pracy: +7i -7dbać o prawo / lewo usprawiedliwienia, a ostatnie miejsce, aby dopasować nawias zamykający dla printw szczególności. Przygotowując ciąg formatu, mamy również

  • automatyczna konkatenacja literałów łańcuchowych przez linie i
  • powtarzanie ciągów przez pomnożenie (dając nam wiele pól zastępczych w cenie jednego)

18

JavaScript (9x9)

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

Wynik

1        
 1       
  1      
   1     
    1    
     1   
      1  
       1 
        1

Notatki

Stworzyłem i grałem w golfa (najlepiej jak potrafię) dla kwadratu o dowolnej przekątnej n:

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

zastępując liczby *** asdf *** stałymi w zależności od długości boku n, na przykład dla n = 6:

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

Ale mimo tego, że ten kod ma długość 46, nie mogłem uzyskać stałej przestrzeni do wyrównania ze spacją na przekątnej kodu, dopóki nie byłaby tak duża jak 9x9 z marnowaną linią (piąta)

Edycja: Zmieniono, aby dodać alert (). Przed:

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

Ach tak, rozumiem, rozumiem o co ci chodzi. Naprawiam to teraz, przepraszam.
Kuilin Li

Masz tam zindywidualizowane zmienne globalne: P
Tomáš Zato,

16

CJam, 5x5, 12 spacji

Nie jestem zwycięzcą, ale chciałem dodać raczej niewielkie i rzadkie zgłoszenie, ponieważ większość odpowiedzi drukuje po przekątnej.

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

odbitki

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

Sprawdź to tutaj.

Ostatnie dwa znaki kodu nic nie rób, więc w rzeczywistości zawiera on tylko 10 bajtów prawdziwego kodu. W przypadku mniejszej siatki mogę nawet zmniejszyć ją o kolejne dwa bajty do 8, ale to nie pasuje do 3x3, a ten kod nie działa nawet dla rozmiarów siatki.

Jak to działa:

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.";

Rozbite odpowiedzi CJam i Pyth są zdecydowanie moją ulubioną rzeczą na stronie. Zdobądź głos w stylu Reddit.
Soham Chowdhury,

14

Befunge , 9x9

Nie mam pojęcia, dlaczego to zrobiłem. Zajęło sposób zbyt długo. Mam teraz ogromny ból głowy.

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

Wynik:

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

Jakieś wyjaśnienie

Kod używa gdo odczytywania @znaków z siatki „w locie” (a także ostatniej spacji, czyli @ / 2) i pdo modyfikowania pętli w celu zapisania ostatniego wiersza wyjściowego.

Każdy znak w kodzie jest używany w pewnym momencie, jako kod lub jako dane ( 9i @na dwóch ostatnich wierszach).

Zasadniczo musiałem zrobić wiele obejść, aby kod działał. Wskaźnik instrukcji wykonuje wiele przecięć podczas wykonywania, z których niektóre są przeskakiwane. (Nie mogłem użyć żadnej instrukcji dla różnych kierunków, ponieważ kolidowałyby. Nie ma NOP.) Gdzie indziej albo użyłem tej samej postaci, albo po prostu ją rozwiązałem (patrz $:środkowa część).

Wykonałem też kilka kreatywnych prac na stosie:

  • Kiedy kończy się (wewnętrzna) pętla zapisująca znaki (wszystkie spacje dla tej linii), stos ma n,0. Potem muszę się zmniejszyć n. Oczywistym rozwiązaniem byłoby $1-, ale udało mi się go skrócić, używając !-.
  • Kiedy kończy się (zewnętrzna) pętla zapisu linii (wszystkie normalne linie są drukowane), stos ma znak 0. Następnie zorganizowałem zmieniacz kodów ( 20g46p7g46\p), aby z niego korzystać 0, zamiast marnować 2 znaki $0.

Befunge zawsze otrzymuje ode mnie +1. Miło z !-; to coś, co bym zrobił. Ciekawostka: w Funge-98 zjest NOP.
Kasran

@Kasran Yeah. znie znalazłem się na wiki i użyłem tego do kodowania, co oznaczało, że jakakolwiek komenda nie zmieniła kierunku IP. Prawie trzeba było refaktoryzować 70% kodu z powodu jednego miejsca, które powinno być NOP.
PurkkaKoodari,

Zaletą tego jest to, że twój kod będzie działał w Befunge-95 (który, jak sądzę, nie ma spacji NOP), a także 98; ponieważ korzystanie z 95 jest znacznie trudniejsze, zawsze uważałem te odpowiedzi za imponujące.
Kasran

13

Python 3, 8x8

Istnieje 50 znaków spacji i 14 spacji. Ostatnia linia ma jeden bezużyteczny znak, ale wszystko inne jest konieczne.

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

Wynik:

       p
       p
ppppppp 
       p
       p
       p
       p
       p

2
Właśnie próbowałem bawić się z (a,*b,c)="12345"...
oznaczeniem

@ sp3000 rodzaj haskell-esque. używam Pythona o wiele bardziej niż haskell, skąd tego nie wiedziałem
undergroundmonorail

11

Rubinowy, 8x8

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

Wynik:

0       
 1      
  2     
   3    
    4   
     5  
      6 
       7


9

C ++, 12x12

Edycja: Więc miałem trochę obsesji na punkcie tego wyzwania i udało mi się obniżyć go z 17 x 17 do 12 x 12. Trochę zajęło mi uświadomienie sobie, że mogę użyć go /**/jako separatora tokenów. Ten kod wykorzystuje fakt, że splajt linii nadal działa w Clang ze spacją po nim, chociaż daje ostrzeżenia i rujnuje kolorystykę kodu Xcode.

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

Wynik:

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

5

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

Uwaga: W interesie dobrego sportowca-osoby, to czyta swoje własne źródło przez ', co dla niektórych jest oszustwem. Przeczytaj debatę tutaj .

Program

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

Wynik

(       
 ,      
  &     
   %    
    $   
     #  
      " 
       !

Wyjaśnienie

Wersja bez gry w golfa

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

(spacje i spacje są zastępowane literami „n” ze względu na czytelność).

To rozwiązanie opiera się na fakcie, że za pomocą indeksu [0, szerokość ^ 2) mod szerokość kwadratu może powiedzieć, czy jesteś na końcu rzędu, czy na przekątnej. Ponieważ wszystkie przestrzenie są umieszczone wzdłuż przekątnej, łatwo jest określić, kiedy należy wydrukować spację!

W pseudokodzie

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);

Dyskusja

Jestem z tego bardzo dumny, choć żałuję, że nie mógłbym uczynić z każdej przestrzeni innej niż non-nop. Jestem również dumny z tego, że nie użyłem standardowej pułapki Befunge get-increment-put! Drukuje różne symbole non-space, ponieważ miałem na to miejsce i nie chciałem się nudzić.

Wypróbuj na Windowsie dzięki BefungeSharp !


4

CJam, 4 x 4 (8 spacji)

 N a
` S 
 * N
X $ 

Wypróbuj online w interpretatorze CJam .

Wynik

[ " 
 " ]
[ " 
 " ]

Jak to działa

  • Nwypycha znak wiersza jako ciąg singletonu. azawija ten ciąg w tablicy.

  • ` sprawdza wynik, tzn. wypycha ciąg znaków reprezentujący tablicę.

    Oto wynik:

    ["
    "]
    
  • S*łączy wynikowy ciąg (tablicę znaków), oddzielając jego elementy spacjami. Innymi słowy, umieszcza znak spacji między wszystkimi parami sąsiednich znaków ciągu.

    Oto wynik:

    [ " 
     " ]
    
  • N popycha kolejny kanał.

  • X$ kopiuje element stosu o indeksie 1 (licząc od góry), tj. ciąg wielu wierszy.

  • Na koniec interpreter drukuje wszystkie elementy na stosie: oryginalny ciąg wieloliniowy, wysuw linii i kopię ciągu wieloliniowego.


4

SOGL V0.12 , 2x2 (2 spacje)

2 
 ╚

Wypróbuj tutaj!

Wynik

 /
/ 

Wyjaśnienie

W SOGL wszystkie wiersze oprócz ostatniego zastępują wiersze - zamienia wszędzie w dalszym ciągu ostatni znak wiersza na wszystko przed nim. Więc pierwsza linia tutaj jest replace space with 2 in the next line.
Następnie wykonywana jest następna linia 2╚: 2popycha 2 i tworzy przekątną wielkości 2.



3

Rubinowy, 8x8 7x7

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

Wynik:

f      
f      
f      
f      
f      
f      
 ffalse

Poprzednia wersja, 8x8 z 20 spacjami:

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

Wynik:

ff     
ff     
ff     
ff     
ff     
ff
ff     
  ffalse

3

Pushy , kwadrat 4x4

Niekonkurencyjny, ponieważ język jest późniejszy niż wyzwanie:

Kod:

 H32
2 C4
:" } 
\o/

Wyjścia:

d   
 d  
  d 
   d

Wypróbuj online!

Ponieważ białe znaki nie mają znaczenia w Pushy, kod można łatwo ustawić tak, aby pasował do ujemnego wyniku. Rzeczywisty program wygląda następująco:

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

Ukośniki odwrotne rozpoczynają komentarz, więc końcowe \o/jest tylko po to, aby uzupełnić negatyw i wyglądać fajnie.


Alternatywnie, dla tego samego wyniku, możemy mieć następujące rozwiązania:

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&'*' 
         )

Definiuje funkcję pomocniczą, a ! bktóra drukuje linię formularza bbbbbbbbba, oraz funkcję rekurencyjną, n & cktóra drukuje nlinie formularza, ccccccccc␣po której następuje jedna linia formularza ␣␣␣␣␣␣␣␣␣c.

Używa <$( fmap constponownie) zakresu, aby powtórzyć znak. Należy pamiętać, że <$jest dostępny tylko bez importu od GHC 7.10, który jest późniejszy niż to wyzwanie. Nie jestem całkowicie pewien, czy to sprawia, że ​​to zgłoszenie jest niekonkurencyjne.

Tutaj nie ma nic ekscytującego z wyborem układu lub algorytmu; Nie miałem zbyt wiele bajtów do stracenia i to po prostu szczęście, że można uzyskać przerwanie linii putStrLntak, jak to zrobili.



3

05AB1E , 3x3 (6 bajtów spacji )

 3Ð
Λ q
°° 

Wynik:

3  
 3 
  3

Wypróbuj online.

Wyjaśnienie:

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 spacji)

Spojrzałem na to, przeglądając je i byłem pewien, że będzie jakieś rozwiązanie Perla mniejsze niż 7x7 ... Bardzo fajne wyzwanie! To rozwiązanie wymaga -E.

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

Stosowanie:

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

Wynik:

     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:

Wynik:

        *
       * 
      *  
     *   
    *    
   *     
  *      
 *       
*        

1

C (gcc) , 7x7 8x8

EDYCJA: Poprzednia wersja miała nieprawidłowe zachowanie.

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

Wypróbuj online!


Wymagamy również, aby każdy wiersz i każda kolumna zawierały co najmniej 1 spację i 1 znak spacji . ” W pierwszej kolumnie brakuje znaku spacji.
Kevin Cruijssen

@KevinCruijssen Jakoś spóźniłem się na kryterium kolumn, więc wszyscy się mylą. Dokonam przeróbki, gdy będę mieć pod ręką prawdziwy komputer.
gastropner

1

Galaretka , 4 x 4 (12 spacji)

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

Wypróbuj online!

Wynik:

!   
 !  
  ! 
   !

To była niezła zabawa.

Jak to działa

 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

Łatwa część: Galaretka ignoruje białe spacje (o ile używane są tylko wbudowane bajty).

Część trudna: Każda linia w Galaretce jest osobnym linkiem (lub funkcją), więc rozłożenie stałej instrukcji na wiele linii nie jest bardzo krótkie. Użycie literału łańcuchowego jest dobrym kandydatem, ale nie ma pojęcia, jak wygenerować przeczenie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.