Manetka Kołmogorowa


37

Wydrukuj lub wyświetl następujące trzy wiersze tekstu, dokładnie tak, jak pokazano poniżej. Końcowy znak nowej linii jest akceptowany.

 bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ

Ten blok tekstu jest taki sam jak poniższy, ale n-ta kolumna jest obracana n razy w dół:

 !"#$%&'()*+,-./0123456789
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

Należy pamiętać, że jest to wyzwanie , więc format wyjściowy nie jest elastyczny.


1
Czy tekst kończy się na nowej linii? W szczególności czy można kończyć na '.... z \ n \ n`?
Ton Hospel

2
@Tom nie, powinna być maksymalnie jedna nowa linia
Stewie Griffin

Czy wiodąca nowa linia jest akceptowalna?
Dom Hastings,

@DomHastings Nie, przepraszam.
Stewie Griffin

(dla wielu języków (HTML, ///, Tekst, Bubblegum) te 80 znaków byłoby (prawdopodobnie, oprócz Bubblegum) najkrótszych, czyli nudnych, proszę nie rób tego)
użytkownik202729

Odpowiedzi:


18

Java 8, 169 162 150 146 116 113 106 95 94 93 92 91 90 84 bajtów

Tak, w końcu to zrobiliśmy! Pobiliśmy 88-bajtowe dane wyjściowe, które można znaleźć na dole. Dziękujemy wszystkim, którzy brali udział w grze w golfa!

v->{for(int i=0,t=0;++i<81;System.out.printf("%c",i%27<1?10:(4-t++%3)*32%97+i%27));}

-7 bajtów dzięki @StewieGriffin .
-42 bajty dzięki @Neil .
-11 bajtów dzięki @PeterTaylor .
-3 bajty dzięki @ OlivierGrégoire .
-6 bajtów dzięki @ OlivierGrégoire i @Neil (Olivier zasugerował port odpowiedzi JavaScript Neila ).

Wypróbuj online.

Wyjaśnienie:

v->{                          // Method with empty unused parameter and no return-type
  for(int i=0,t=0;++i<81;     //  Loop from 1 to 81 (exclusive)
     System.out.printf("%c",  //   Print the following character:
      i%27<1?                 //    If it's the last column
       10                     //     Print a new-line
      :                       //    Else:
       (4-t++%3)*32%97+i%27   //     Print the correct character based on the index

Zobacz tutaj, co robi każda z części arytmetycznych i jak kończy się na prawidłowych znakach.


Java 8, 88 bajtów

v->" bC#eF&hI)kL,nO/qR2tU5wX8z\nA!cD$fG'iJ*lM-oP0rS3uV6xY9\naB\"dE%gH(jK+mN.pQ1sT4vW7yZ"

Nudne, ale wykorzystanie zamierzonego obrotu kolumn na pewno nie będzie krótsze w Javie .. Naprawdę! Wkrótce opublikuje rozwiązanie, aby zobaczyć, ile bajtów różni się. Najwyraźniej różnica to tylko -4 bajty! :RE

Wypróbuj online.



1
Opierając się na moim podejściu do CJam, jestem prawie pewien, że powinna istnieć rozsądnie prosta formuła arytmetyczna dla punktu kodowego w pozycji (x, y), który najprawdopodobniej pobije twoje 169-bajtowe podejście, a może nawet literalny ciąg.
Martin Ender

1
116 bajtów:v->{String a="";for(int i=2,j,t;++i<6;){for(j=31;++j<58;a+=(char)(t<1?j+65:t>1?j:j+33))t=(j-i)%3;a+="\n";}return a;}
Neil

1
Ahem, 95:v->{for(int i=0,r,c;++i<81;System.out.printf("%c",c<1?10:32*++r+c-1/r))r=(i/27+28-(c=i%27))%3;}
Peter Taylor

1
92 bajty ( ccałkowicie usunięte )
Olivier Grégoire

4
@ OlivierGrégoire Java outgolfing JavaScript? Co zrobiłem źle?
Neil

13

Łuska , 13 bajtów

Tzṙṫ26¡m→"Aa 

Zwróć uwagę na spację końcową. Wypróbuj online!

Wyjaśnienie

Tzṙṫ26¡m→"Aa   No input.
         "Aa   The string "Aa ".
      ¡        Iterate
       m→      map successor: ["Aa ","Bb!","Cc\"","Dd#",..
 z             Zip with
   ṫ26         the reversed range [26,25,24,..,1]
  ṙ            using rotation: [" Aa","b!B",..,"z9Z"]
               This also truncates the list to length 26.
T              Transpose, implicitly print separated by newlines.

11

SPL (Shakespeare Programming Language), 1679 1618 1600 bajtów

.
Ajax,.
Ford,.
Puck,.
Act I:.
Scene I:.
[Enter Ajax and Ford]
Ajax:
You are the remainder of the quotient between the sum of the remainder of the quotient between the product of me and a fat joy and the sum of the cube of a big red day and the difference between a red fat pig and a big old fat cow and the quotient between me and the sum of a day and the square of the sum of a joy and a big red day and the sum of a cat and a fat son.
[Exit Ajax]
[Enter Puck]
Ford:
Am I as good as nothing? If so, you are a bad big old red fat day. Am I as good as a joy? If so, you are the sum of a joy and a the cube of an old bad day. Am I as good as a big day? If so, you are the sum of the square of the sum of a big red fat cat and an old cow and the sum of an old war and a lie.
[Exit Ford]
[Enter Ajax]
Ajax:
You are the sum of thyself and the remainder of the quotient between me and the sum of a man and the square of the sum of a son and a big fat cow. Speak thy mind!
[Exit Puck]
[Enter Ford]
Ford:
You are the sum of yourself and a son.
Ajax:
You are the remainder of the quotient between me and the sum of a cat and the square of the sum of a cow and an old red sky.
Ford:
Am I as good as nothing? If so, let us proceed to scene III.
Scene II:.
Ajax:
You are the product of the sum of a fat man and a cow and the sum of a man and the square of the sum of a cat and a big red son. Are you not better than me? If so, let us return to act I. Let us proceed to scene IV.
Scene III:.
Ajax:
You are the sum of a big old fat cat and a red cow. Speak thy mind! Let us return to scene II.
Scene IV:.
[Exeunt]

Miałem pewne problemy z tłumaczem ( https://github.com/drsam94/Spl ), więc nie jest tak mały, jak mi się wydaje. Ale przynajmniej to działa :)


Oto ta sama logika w PHP, aby trochę łatwiej zobaczyć, co się dzieje.

<?php

Act1Scene1:
$ford = ((2 * $ajax) % 52 + $ajax / 26) % 3;
if ($ford == 0) {
    $puck = 32;
}
if ($ford == 1) {
    $puck = 65;
}
if ($ford == 2) {
    $puck = 97;
}
$puck = $ajax % 26 + $puck;
echo chr($puck);

$ajax = $ajax + 1;

$ford = $ajax % 26;
if ($ford == 0) {
    goto Act1Scene3;
}

Act1Scene2:
if ($ajax < 78) {
    goto Act1Scene1;
}
goto Act1Scene4;

Act1Scene3:
$ford = 10;
echo chr($ford);
goto Act1Scene2;

Act1Scene4:

4
Wystąpienia w tym brzmieniu przypominają szaloną książkę Dr. Seussa. : ^ D
DLosc

10

JavaScript (ES6), 86 75 bajtów

f=(i=k=0)=>i<80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''

Edycja: Zapisano 11 bajtów dzięki @Ryan. Teraz 10 bajtów krótszych niż literał!

JavaScript (Node.js) , 64 bajty

f=(i=k=0)=>i<80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''

Wypróbuj online! Dzięki @Ryan.


2
Możesz zapisać 11 bajtów z rekurencją: f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''i 11 innych w środowisku Węzła jako bok:f=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
Ry

8

05AB1E , 17 15 bajtów

Zaoszczędzono 2 bajty dzięki Erikowi Outgolfer

žQAuA)øε¼¾GÁ]ø»

Wypróbuj online!

Wyjaśnienie

žQ                 # push the list of printable ascii characters
  Au               # push upper-case alphabet
    A              # push lower-case alphabet
     )ø            # zip
       ε           # apply to each
        ¼          # increment counter
         ¾G        # for N in [1 ... counter] do:
           Á       # rotate string right
            ]      # end loops
             ø     # zip
              »    # print list joined by newlines

@Emigna Czuję, że εNpowinno być. Łączy dwa pomysły vyNFÁ])ø»i twój.
Magic Octopus Urn

@MagicOctopusUrn: Tak, często chciałem Npodczas korzystania ε. Technicznie nie pasuje, ponieważ εnie jest pętlą, choć ponieważ czasami używamy go jako takiego, byłoby miło mieć go.
Emigna

8

CJam (18 bajtów)

26{_" Aa"f+m>}%zN*

Demo online

Sekcja

Oczywistym podejściem jest generowanie oryginalnych linii, zip, obracanie z ee::m>i zip z powrotem. Ale ee::jest dość długi i krócej generuje kolumny bezpośrednio.

26{         e# For i = 0 to 25...
  _" Aa"f+  e#   Generate the unrotated column by offsets from the starting chars
  m>        e#   Rotate the appropriate distance
}%
zN*         e# Zip and join the rows with newlines

8

Python 2 , 72 bajty

x=98
exec"r='';exec'r+=chr(x/3);x+=291*(x<180)-94;'*26;print r;x-=78;"*3

Wypróbuj online!

Działa to poprzez usunięcie 31.333..z poprzedniego znaku, dodanie, 97gdy poprzedni punkt kodowy jest mniejszy niż 60, i odjęcie 26na końcu każdej linii.


8

R , 64 63 bajtów

cat(intToUtf8(c(32:57,10,65:90,10,97:122,10)[(0:80*55)%%81+1]))

Wypróbuj online!

-1 bajt dzięki Giuseppe

Doszedłem do tego przez sporo prób i błędów, więc walczę o zwięzłe wyjaśnienie. Zasadniczo, zamiast kodów znaków, zacząłem od prostszej sekwencji 1:81 reprezentującej oryginalny blok tekstu (3 * 26 plus 3 znaki nowej linii) i zbadałem wskaźniki, gdzie te wartości kończą się w obróconym bloku. Wynika to z regularnej sekwencji, która spada za każdym razem o 26, modulo 81 (lub równoważnie, zwiększa się o 55 mod 81). Następnie należało odtworzyć tę sekwencję (0:80*55)%%81+1]), odwzorować na rzeczywiste wartości Unicode c(32:57,10,65:90,10,97:122,10), przekonwertować na znaki i wydrukować.


dobra robota! Będę to wynagradzać, chociaż naprawdę spodziewałem się innego rozwiązania w przedziale 80+ bajtów, więc myślę, że podniosę nagrodę do 100.
Giuseppe

@Giuseppe Bez obaw! Szczerze mówiąc, chodzi bardziej o wyzwanie niż o przedstawiciela.
user2390246

ah, możesz zapisać bajt używając 55zamiast -26od -26 == 55(mod 81).
Giuseppe,

@Giuseppe Dzięki za sugestię i nagrodę!
user2390246

6

Japt , 17 15 bajtów

"@`"
;By@=cÄ é

Przetestuj online!

Wyjaśnienie

"@`"         The string "@`\x1F". The following newline sets U to this string.
;            Reset variables A-L to various values. B is set to
 B           the uppercase alphabet, which we only use to get a length of 26.
  y@         Map each column Z (initially just the letter itself) through this function:
     cÄ        Increment each char-code in U.
        é      Rotate by 1 character.
    =          Set U to the result to keep the chain going.
             This generates the 26 columns exactly how we needed them.
             Implicit: output result of last expression

7 innych możliwych 15 bajtów:

;By@" Aa"c+Y éY
;ByÈpv)iSc+Y)éY
;ByÈ+v)iSc+Y)éY
;ByÈpv)iYd32)éY
;ByÈ+v)iYd32)éY
;ByÈpv)i32dY)éY
;ByÈ+v)i32dY)éY

5

CJam , 23 21 bajtów

3{26{_I-" aA"=+}/N}fI

Wypróbuj online!

Wyjaśnienie

3{         e# For I from 0 to 2...
  26{      e#   For i 0 to 25...
    _I-    e#     Duplicate i and subtract I. This shifts the starting
           e#     character of each line left in the following string.
    " aA"= e#     Pick the character at the start of the unrotated line
           e#     of the current character. We basically just cycle
           e#     through non-letters, lower-case, upper-case, which is
           e#     the cycle throughout the result. Due to the I-, when
           e#     We get to the second line we start from A, and on the
           e#     third line we start from a.
    +      e#     Add i to the starting character to get the correct
           e#     column.
  }/
  N        e#   Push a linefeed.
}fI

3
Bardzo miłe wytłumaczenie. Szczególnie podoba mi się: „Wciśnij ten losowo wyglądający ciąg”. : P
Stewie Griffin

2
@StewieGriffin przepraszam, ten sznur musiał iść.
Martin Ender

5

MATL , 16 bajtów

1Y2tk9V:v26:l&YS

Wypróbuj online!

Wyjaśnienie

1Y2     % Push 'AB...Z' (predefined literal)
t       % Duplicate
k       % Maker lowercase
9V      % Push 9, convert to string representation: gives char '9'
:       % Range. For chars, gives string from space to that
v       % Concatenate vertically. Gives a 3×26 char matrix
26      % Push 26
:       % Range. For numbers, gives numeric vector from 1 to that
l&YS    % Circularly shift each column of the first input (char matrix)
        % by the amount specified by the second input (numeric vector).
        % Implicitly display

2
Fajnie :) Nadal mam problem, kiedy muszę zmienić domyślne formaty We / Wy funkcji ... :(
Stewie Griffin

1
oohh bardzo fajnie z kolejnością strun używanych 1:26jako przesunięcie. Powinienem spróbować w mojej odpowiedzi R ...
Giuseppe

1
@StewieGriffin Meta-funkcja &była świetnym dodatkiem, od pomysłu Suever :-)
Luis Mendo

@Giuseppe Tak, to uratowało bajt :-)
Luis Mendo

5

Galaretka , 13 bajtów

26“ aA‘ẋs+ḶỌY

Wypróbuj online!

Jak to działa

26“ aA‘ẋs+ḶỌY  Main link. No arguments.

26             Set the argument and the return value to 26.
  “ aA‘ẋ       Repeat [32, 97, 65] (code points of ' ', 'a', and 'A') 26 times.
        s      Split the result into chunks of length 26.
          Ḷ    Unlength; yield [0, ..., 25].
         +     Add [0, ..., 25] to each of the chunks.
           Ọ   Unordinal; cast all integers to characters.
            Y  Jojn, separating by linefeeds.

5

Perl 5 , 46 bajtów

print map{chr$n+++ord,$/x!($n%=26)}($",A,a)x26

Oszczędność 13 bajtów dzięki magicznej magii @TonHospel !

Wypróbuj online!


Twój $i++jest sprawiedliwy $_i możesz go użyć sayzamiast, printwięc to naprawdę50
Ton Hospel

Mmm i łatwo jest się go również pozbyć {}na mapie dla 49:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
Ton Hospel

@TonHospel Tak, oczywiście! Dzięki!
Dom Hastings

Przebudowy pętli daje 47: print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26. Niestety saydaje jedną nową linię za dużo.
Ton Hospel

I dobra zabawa 48:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
Ton Hospel

5

R , 88 86 bajtów

cat(intToUtf8(rbind(diffinv(matrix(c(66,-32,-31),25,5,T)[,1:3],,,t(c(32,65,97))),10)))

Wypróbuj online!

R jest okropny w manipulowaniu strunami i chociaż ma pewne porządne wbudowane macierze, rotacje to kolejna rzecz, której nie robi się łatwo. Z radością dam nagrodę każdemu, kto może wygrać w golfa w R.

Pomimo znalezienia krótszej odpowiedzi, nadal przyznam 50 powtórzeń za pierwszą inną odpowiedź R krótszą niż 88 bajtów.

Chyba przyznałbym sobie nagrodę, gdybym mógł, ale to całe dwa bajty krótsze niż „nudna” odpowiedź! Unikam rotacji, wykorzystując skłonność R. do recyklingu.

EDYCJA: odpowiedź użytkownika2390246 całkowicie mnie przerosła i przyznam nagrodę w wysokości 100 punktów, ponieważ to rozwiązanie jest znacznie lepsze.

Aby się tu dostać, zdekonstruowałem pożądane dane wyjściowe do ich punktów kodowych ASCII za pomocą utf8ToInt(usuwając znaki nowego wiersza), zbudowałem macierz i uruchomiłem diffna nich, uzyskując różnice między kolumnami. Biorąc pod uwagę okresowość, postanowiłem skonstruować matrycę w golfowy sposób, mając nadzieję diffinvna odtworzenie oryginału.

Dzięki okresowości możemy odtworzyć diffmacierz ed, zmuszając R do recyklingu o długości innej niż wielokrotna i wyodrębniając kolumny, które tak naprawdę chcieliśmy:

matrix(c(66,-32,-31),25,5,T)[,1:3]

Następnie odwracamy ten proces, diffinvaby odtworzyć punkty kodowe, dołączyć wiersz 10(nowe linie) na dole, ponownie przekonwertować na ASCII za pomocą intToUtf8i catwynik.


3
Możesz dać sobie nagrodę. Nagroda kosztowałaby cię x powtórzeń, a zyskałbyś z tego x powtórzeń ... Więc pomyśl o tym!
Stewie Griffin


5

Stax , 14 12 bajtów

ü≤▐éh╢%╠£┐3]

Uruchom i debuguj

Rozpakowane, niepolowane i skomentowane, wygląda to tak.

3R26        push [1,2,3] and 26
K           cross-map using the rest of the program, printing lines implicitly
            this instruction maps over a cartesian join
  -         subtract
  " Aa"@    index into " Aa" using the subtraction result
  i+        add the iteration index

Uruchom ten

Ten program używa tylko funkcji, które były dostępne od pierwszego wydania stax, ale najwyraźniej zapomniałem o Kcross-map, kiedy pierwotnie pisałem tę odpowiedź.

Jedną z prawie interesujących rzeczy, na które należy zwrócić uwagę w tej odpowiedzi jest to, że Rjest to niepotrzebna instrukcja, ponieważ Kdomyślnie zamienia liczby całkowite na zakresy. Jednak nie ma sposobu na przesunięcie 3i 26bez dodatkowego bajtu pomiędzy nimi.


4

PowerShell , 53 bajty

0..2|%{-join(32..57|%{[char]($_+(0,65,33)[$j++%3])})}

Wypróbuj online!

Widzę, że jest to podobne do odpowiedzi Perla Doma, ale doszedłem do tego niezależnie.

Wykorzystuje to fakt, że wzorzec idzie Symbol - Lowercase - Capital, nawet podczas owijania nowych wierszy ( 8 - z - Ana przykład), a tym samym dodaje odpowiednie przesunięcie (wybrane przez $j++%3) do bieżącej liczby $_przed -joinscaleniem ich w pojedynczy ciąg. Robi się to trzy razy, aby wymyślić trzy linie (zachowując $jmiędzy iteracjami). Te trzy wiersze pozostaną w przygotowaniu, a domniemane Write-Outputdaje nam nowe wiersze za darmo.


4

Julia 0.6 , 79 bajtów

println.([prod([' ':'9' 'A':'Z' 'a':'z'][n,mod1(i-n,3)] for n=1:26) for i=2:4])

[' ':'9' 'A':'Z' 'a':'z']to nieobrócona tablica znaków 2d, [n,mod1(i-n,3)]indeksowana do tej tablicy z odpowiednim obróceniem. prodprzenosi wektor znaków na ciąg znaków (ponieważ do łączenia ciągów stosuje się mnożenie). Istnieją dwa zagnieżdżone wyrażenia wektorowe, w wyniku których wektor zawiera 3 ciągi, a następnie println.drukuje każdy ciąg w wektorze, po którym następuje nowa linia.

W TIO brakuje odpowiedniej metody pomnożenia (za pomocą prod) dwóch znaków w celu uzyskania ciągu. Wiem, że ta metoda została dodana nieco niedawno, ale wersja TIO wydaje się być taka sama jak wersja na moim komputerze, na której działa ten kod, więc nie mogę w pełni wyjaśnić, dlaczego nie działa na TIO.

Skopiuj przykład wklejania ( ;nie jest to konieczne, po prostu tłumi dodatkowe dane wyjściowe w REPL):

julia> println.([prod([' ':'9' 'A':'Z' 'a':'z'][n,mod1(i-n,3)] for n=1:26) for i=2:4]);
 bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ

4

Węgiel drzewny , 26 21 15 bajtów

E³⭆⧧⟦γαβ⟧⁻κμμ

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

 ³              Literal 3
E               Map over implicit range
   β            Lowercase letters
  ⭆             Map over characters and concatenate
            κ   Outer index
             μ  Inner index
           ⁻    Subtract
       γ        Printable characters
        α       Uppercase letters
         β      Lowercase letters
     §⟦   ⟧     Circularly index into list (selects one of the three strings)
              μ Inner index
    §           (Circularly) index into string
                Implicitly print each inner map result on a separate line

4

J , 29, 27 25 bajtów

-2 bajty dzięki FrownyFrog -2 bajty dzięki milom

 |:u:(<26)2&(|.>:)32 65 97

Wypróbuj online!

Wstępne podejście: J , 29 bajtów

u:(-|."_1&.|:32 65 97+/])i.26

Objaśnienie: i.26- zakres 0–26

   i.26
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

32 65 97+/] - utwórz 3-rzędową tabelę dla postaci

   32 65 97+/i.26
32 33 34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57
65 66 67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

&.|:transpose następnie zrób następny czasownik ( |.) i transponuj ponownie

-|."_1 obróć każdy rząd n razy

     (-i.26)|."_1|:32 65 97+/i.26
 32  65  97
 98  33  66
 67  99  34
 35  68 100
101  36  69
 70 102  37
 38  71 103
104  39  72
 73 105  40
 41  74 106
107  42  75
 76 108  43
 44  77 109
110  45  78
 79 111  46
 47  80 112
113  48  81
 82 114  49
 50  83 115
116  51  84
 85 117  52
 53  86 118
119  54  87
 88 120  55
 56  89 121
122  57  90

u: przekonwertować na Unicode

    u:(-i.26)|."_1&.|:32 65 97+/i.26
 bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ

Wypróbuj online!


@FrownyFrog Dziękujemy! Najwyraźniej nie sprawdziłem możliwości stworzenia macierzy w kolumnie.
Galen Iwanow

2
|:u:(<26)2&(|.>:)32 65 97oszczędza 2 bajty.
mile

@miles Dzięki za wspaniały kod!
Galen Iwanow

4

C 70 70 67 67 60 64 bajtów

i;f(t){for(i=t=0;++i<81;putchar(i%27?(4-t++%3)*32%97+i%27:10));}

+4 bajty, aby funkcja mogła zostać ponownie użyta .

Niepoprawna 60-bajtowa odpowiedź, której nie można użyć ponownie:

i,t;f(){for(;++i<81;putchar(i%27?(4-t++%3)*32%97+i%27:10));}

Port mojej odpowiedzi na Javę 8 Odpowiedź JavaScript @Neil .

Wypróbuj online.


Ponieważ funkcje muszą być wielokrotnego użytku, a ta funkcja nie wychodzi poprawnie, pozostawia za sobą zmienne globalne. Potrzebujesz i=t=0.
Jonathan Frech

@JonathanFrech Naprawiono
Kevin Cruijssen

3

APL + WIN, 26 bajtów

Początek indeksu 0

⎕av[(-⍳26)⊖32 65 97∘.+⍳26]

Wygeneruj macierz wartości liczb całkowitych indeksu znaków w wektorze atomowym APL.

Obróć każdą kolumnę w dół o wartość liczbową.

Użyj uzyskanych wskaźników, aby wyświetlić znaki z wektora atomowego.


3

Vim, 81 79 bajtów

a !"#$%&'()*+,-./0123456789␛:h<_␍jjYZZpPgU$klqq"aDjlma"bD"ap`ajD"bpkkp`akl@qq@q

Objaśnienie (uproszczone)

a !"#$%&'()*+,-./0123456789␛    Insert the first line
:h<_␍jjYZZpPgU$                  Insert the alphabet twice by copying it from the help page
klqq                             Define the loop `q`:
"aDjl                             Cut the rest of the line to `a`
ma"bD"ap                          Replace the rest of the second line (cut `b`, paste `a`)
`ajD"bp                           Replace the rest of the third line (cut `c`, paste `b`)
kkp                               Paste `c`
`akl@qq@q                        Run the loop, each time one more step to the right

3

C, 72 bajty

f(k,x,n){for(n=81;n;putchar(x?k*32+59-x-!k:10))x=--n%27,k=(3+x-n/27)%3;}



3

Japt , 17 bajtów

26Æ" Aa"c+X éX÷y

Sprawdź to


Wyjaśnienie

26Æ           Ã       :Create the range [0,26) and pass each X through a function
   " Aa"              :  String literal
        c+X           :  Add X to the codepoint of each character
            éX        :  Rotate right X times
               ·      :Join with newlines
                y     :Transpose

Oooh, miałem inne rozwiązanie, które może, ale nie musi być wystarczające, aby uzasadnić osobną odpowiedź:;Bå_cÄ é}"@`" ·y
ETHprodukcje

Teraz, gdy jesteśmy tej samej długości, czuję się lepiej ;-)
ETHproductions

@ETHproductions: dla mnie wygląda wystarczająco inaczej :) Chciałem sprawdzić, czy mogę wymyślić krótsze rozwiązanie, mapując Cpo lunchu. Nie wiem jak yi ·skończyło się niewłaściwą drogą; Musiałem Ctrl+Zed zbyt wiele razy przed Ctrl+Aing!
Kudłaty



2

K4 , 38 bajtów

Rozwiązanie:

-1"c"$+(-t).q.rotate'32 65 97+/:t:!26;

Przykład:

q)k)-1"c"$+(-t).q.rotate'32 65 97+/:t:!26;
 bC#eF&hI)kL,nO/qR2tU5wX8z
A!cD$fG'iJ*lM-oP0rS3uV6xY9
aB"dE%gH(jK+mN.pQ1sT4vW7yZ

Wyjaśnienie:

9 znaków do wykonania obrotu ...

-1"c"$+(-t).q.rotate'32 65 97+/:t:!26;
-1                                   ; / print to stdout, swallow return
                                  !26  / til 26, 0..25
                                t:     / save as variable t
                             +/:       / add each right item to...
                     32 65 97          / the list 32, 65, 97 (ASCII offsets)
           .q.rotate'                  / rotate each-both
       (-t)                            / negate, 0..-25
      +                                / flip rows and columns
  "c"$                                 / cast to characters

2

Perl, 49 46 bajtów

perl -E 'say map chr($_*55%81)=~y// -:A-Z             
a-z       
/cr,0..79'

lub

perl -E 'say grep{$_=chr$_*55%81;y// -:A-Z             
a-z       
/c}0..79'

+1! Nie mogę pomóc ci zaoszczędzić żadnych bajtów z powrotem, ale zastanawiałem się nad użyciem $^x8, ale nie mogę wymyślić innej zmiennej o wystarczającej długości, być może, "@INC"ale jest za długa i używa "@-"zamiast $n++, ale wciąż tej samej długości. Chyba że to pomoże ci to zmniejszyć? Chyba że dodasz -pflagę i masz niejawne wyjście?
Dom Hastings

1
@DomHastings Ah, znalazłem sposób na zapętlenie bez potrzeby przygotowania
Ton Hospel
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.