Kolmogorov shifter


37

Keluarkan atau tampilkan tiga baris teks berikut, persis seperti yang ditunjukkan di bawah ini. Newline tambahan diterima.

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

Blok teks itu sama dengan yang di bawah, tetapi di mana kolom ke-n diputar n kali ke bawah:

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

Perlu diingat bahwa ini adalah tantangan , sehingga format output tidak fleksibel.


1
Apakah teks berakhir pada baris baru? Khususnya apakah boleh untuk mengakhiri di '.... z \ n \ n`?
Ton Hospel

2
@Tom tidak, itu seharusnya menjadi salah satu baris baru
Stewie Griffin

Apakah baris baru terkemuka dapat diterima?
Dom Hastings

@HomHastings Tidak, maaf.
Stewie Griffin

(untuk banyak bahasa (HTML, ///, Teks, Bubblegum) hardcoding 80 karakter itu akan menjadi (terbukti, kecuali Bubblegum) yang terpendek, yang membosankan, tolong jangan lakukan itu)
user202729

Jawaban:


18

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

Yay, akhirnya kami berhasil! Kami telah mengalahkan output literal 88-byte yang dapat ditemukan di bagian bawah. Terima kasih untuk semua yang berpartisipasi dalam golf!

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 byte terima kasih kepada @StewieGriffin .
-42 byte terima kasih kepada @Neil .
-11 byte terima kasih kepada @PeterTaylor .
-3 byte terima kasih kepada @ OlivierGrégoire .
-6 byte berkat @ OlivierGrégoire dan @ Neil (Olivier menyarankan pelabuhan Neil jawaban JavaScript ).

Cobalah online.

Penjelasan:

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

Lihat di sini apa yang dilakukan masing-masing bagian aritmatika, dan bagaimana hasilnya pada karakter yang benar.


Java 8, 88 byte

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

Membosankan, tetapi memanfaatkan rotasi kolom yang diinginkan tidak akan lebih pendek di Jawa pasti .. Saya berdiri dikoreksi! Akan memposting solusi dalam beberapa saat baik cara untuk melihat berapa banyak byte yang berbeda. Ternyata perbedaannya hanya -4 byte! : D

Cobalah online.



1
Berdasarkan pendekatan CJam saya, saya cukup yakin harus ada rumus aritmatika yang cukup sederhana untuk titik kode di posisi (x, y), yang kemungkinan besar akan mengalahkan pendekatan 169-byte Anda dan mungkin bahkan string literal.
Martin Ender

1
116 byte: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 byte (dihapus cseluruhnya)
Olivier Grégoire

4
@ OlivierGrégoire Java mengalahkan JavaScript? Apa kesalahan yang telah aku perbuat?
Neil

13

Sekam , 13 byte

Tzṙṫ26¡m→"Aa 

Perhatikan ruang trailing. Cobalah online!

Penjelasan

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 (Bahasa Pemrograman Shakespeare), 1679 1618 1600 byte

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

Saya memiliki beberapa masalah dengan juru bahasa ( https://github.com/drsam94/Spl ), jadi tidak sekecil yang saya kira bisa. Tapi setidaknya ini bekerja :)


Berikut logika yang sama di PHP, untuk membuatnya sedikit lebih mudah untuk melihat apa yang terjadi.

<?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
Pidato dalam suara ini seperti buku Dr. Seuss gila. : ^ D
DLosc

10

JavaScript (ES6), 86 75 byte

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

Sunting: Disimpan 11 byte berkat @Ryan. Sekarang 10 byte lebih pendek dari literal!

JavaScript (Node.js) , 64 byte

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

Cobalah online! Terima kasih kepada @Ryan.


2
Anda dapat menyimpan 11 byte dengan rekursi: f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''dan 11 lainnya di lingkungan Node sebagai tambahan:f=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
Ry-

8

05AB1E , 17 15 byte

Disimpan 2 byte berkat Erik the Outgolfer

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

Cobalah online!

Penjelasan

ž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 saya merasa seperti εNharus menjadi sesuatu. Menggabungkan dua ide vyNFÁ])ø»dan ide Anda.
Magic Octopus Mm

@ MagicOctopusUrn: Ya, saya sudah sering ingin Nsaat menggunakan ε. Secara teknis tidak cocok karena εbukan loop, meskipun seperti yang kadang-kadang kita gunakan seperti itu, akan lebih baik untuk memilikinya.
Emigna

8

CJam (18 byte)

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

Demo online

Pembedahan

Pendekatan yang jelas adalah menghasilkan garis asli, zip, rotate with ee::m>, dan zip back. Tetapi ee::cukup panjang, dan lebih pendek untuk menghasilkan kolom secara langsung.

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 byte

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

Cobalah online!

Ini berfungsi dengan menghapus 31.333..dari karakter sebelumnya, menambahkan 97ketika codepoint sebelumnya kurang dari 60, dan mengurangi 26pada akhir setiap baris.


8

R , 64 63 byte

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

Cobalah online!

-1 byte terima kasih kepada Giuseppe

Saya sampai pada hal ini melalui sedikit trial and error, jadi saya berjuang dengan penjelasan singkat. Pada dasarnya, alih-alih kode karakter, saya memulai dengan urutan yang lebih sederhana yaitu 1:81 yang mewakili blok teks asli (3 * 26 ditambah 3 baris baru), dan memeriksa indeks di mana nilai-nilai ini berakhir di blok yang diputar. Ini mengikuti urutan reguler yang turun 26 setiap kali, modulo 81 (atau setara, meningkat sebesar 55 mod 81). Saat itu adalah masalah menciptakan kembali urutan itu (0:80*55)%%81+1]), memetakan ke nilai unicode nyata c(32:57,10,65:90,10,97:122,10), mengkonversi ke karakter dan mencetak.


sudah selesai dilakukan dengan baik! Saya akan memberikan hadiah ini, walaupun saya benar-benar mengharapkan solusi lain dalam kisaran 80+ byte, jadi saya pikir saya akan menaikkan hadiahnya menjadi 100.
Giuseppe

@Giuseppe Jangan khawatir! Ini lebih tentang tantangan daripada perwakilan jujur.
user2390246

ah, Anda dapat menyimpan byte menggunakan 55daripada -26sejak -26 == 55(mod 81).
Giuseppe

@Giuseppe Terima kasih atas sarannya, dan untuk hadiahnya!
user2390246

6

Japt , 17 15 byte

"@`"
;By@=cÄ é

Uji secara online!

Penjelasan

"@`"         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 kemungkinan 15-byters lainnya:

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

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

Cobalah online!

Penjelasan

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
Penjelasan yang sangat bagus. Saya terutama suka: "Dorong string yang tampak acak ini." : P
Stewie Griffin

2
@StewieGriffin maaf, string itu harus pergi.
Martin Ender

5

MATL , 16 byte

1Y2tk9V:v26:l&YS

Cobalah online!

Penjelasan

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
Bagus :) Saya masih berjuang ketika saya harus mengubah format I / O standar fungsi ... :(
Stewie Griffin

1
oohh sangat bagus dengan urutan senar untuk digunakan 1:26sebagai shift. Saya harus mencobanya dalam jawaban R saya ...
Giuseppe

1
@StewieGriffin Meta-function &adalah tambahan yang bagus, dari ide Suever :-)
Luis Mendo

@ Giuseppe Ya, itu menyimpan byte :-)
Luis Mendo

5

Jelly , 13 byte

26“ aA‘ẋs+ḶỌY

Cobalah online!

Bagaimana itu bekerja

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 byte

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

Disimpan 13 byte berkat sihir misterius @TonHospel !

Cobalah online!


Anda $i++adil $_dan Anda dapat menggunakannya saysebagai ganti printjadi ini benar50
Ton Hospel

Mmm, dan mudah juga untuk menyingkirkannya {}di peta untuk 49:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
Ton Hospel

@TonHospel Ya, tentu saja! Terima kasih!
Dom Hastings

Mendesain ulang loop memberikan 47: print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26. Sayangnya saymemberi satu baris baru terlalu banyak.
Ton Hospel

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

5

R , 88 86 byte

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

Cobalah online!

R mengerikan dalam manipulasi string dan meskipun memiliki beberapa matriks bawaan yang rapi, rotasi adalah hal lain yang tidak mudah dilakukan. Saya akan dengan senang hati memberikan hadiah kepada siapa saja yang bisa bermain golf di R.

Meskipun saya telah menemukan jawaban yang lebih pendek, saya akan tetap memberikan hadiah 50 rep untuk jawaban R pertama lainnya yang lebih pendek dari 88 byte.

Saya kira saya akan menghadiahkan diri saya hadiah jika saya bisa, tetapi ini adalah keseluruhan dua byte lebih pendek dari jawaban "membosankan"! Saya menghindari rotasi dengan hanya menggunakan kegemaran R untuk daur ulang.

EDIT: jawaban user2390246 benar-benar mengungguli saya dan saya akan memberikan hadiah 100 poin karena solusi itu jauh lebih unggul.

Untuk sampai di sini, saya mendekonstruksi output yang diinginkan ke titik kode ASCII mereka dengan utf8ToInt(menghapus baris baru), membangun sebuah matriks, dan menjalankannya diffuntuk mendapatkan perbedaan arah kolom. Memperhatikan periodisitas di sana, saya mulai membuat matriks dengan gaya golf, berharap dapat digunakan diffinvuntuk membuat ulang yang asli.

Berkat periodisitas, kita dapat membuat ulang diffed matrix dengan memaksa R untuk mendaur ulang dengan panjang non-banyak, dan mengekstrak kolom yang sebenarnya kita inginkan:

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

Kemudian kita membalikkan proses ini, dengan diffinvuntuk menciptakan kembali poin kode, menambahkan deretan 10(baris baru) ke bawah, kembali ke ASCII dengan intToUtf8, dan cathasilnya.


3
Anda bisa memberi hadiah pada diri sendiri. Karunia akan dikenakan biaya x rep, dan Anda akan mendapatkan x rep dari itu ... Jadi, pertimbangkan itu selesai!
Stewie Griffin


5

Stax , 14 12 byte

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

Jalankan dan debug itu

Dibongkar, tidak diserang, dan dikomentari, sepertinya ini.

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

Jalankan yang ini

Program ini hanya menggunakan fitur-fitur yang telah tersedia sejak rilis awal stax, tetapi tampaknya saya lupa Kuntuk cross-map ketika saya awalnya menulis jawaban ini.

Satu hal yang hampir menarik untuk dicatat tentang jawaban ini adalah bahwa itu Radalah instruksi yang tidak perlu karena Ksecara implisit mengubah bilangan bulat menjadi rentang. Namun tidak ada cara untuk mendorong 3dan 26tanpa byte tambahan di antaranya.


4

PowerShell , 53 byte

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

Cobalah online!

Saya melihat ini mirip dengan jawaban Dom's Perl, tetapi saya tiba secara mandiri.

Ini mengeksploitasi fakta bahwa polanya berjalan Symbol - Lowercase - Capital, bahkan ketika membungkus baris baru ( 8 - z - A, misalnya), dan dengan demikian hanya menambahkan offset yang sesuai (dipilih melalui $j++%3) ke angka saat ini $_sebelum -joinmenyatukan mereka menjadi satu string. Itu dilakukan tiga kali untuk menghasilkan tiga garis (melestarikan di $jantara iterasi). Tiga baris itu dibiarkan di saluran pipa, dan yang tersirat Write-Outputmemberi kita baris baru secara gratis.


4

Julia 0,6 , 79 byte

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']adalah array karakter 2d yang tidak diputar, [n,mod1(i-n,3)]mengindeks ke dalam array dengan rotasi yang sesuai. prodmengambil Vektor Karakter ke String (karena perkalian digunakan untuk string bergabung). Ada dua pemahaman vektor bersarang menghasilkan vektor yang berisi 3 string, lalu println.mencetak setiap string dalam vektor diikuti oleh baris baru.

TIO tidak memiliki metode yang tepat untuk melipatgandakan (dengan prod) dua karakter untuk mendapatkan sebuah String. Saya tahu metode yang ditambahkan agak baru-baru ini, tetapi versi TIO tampaknya sama dengan versi di PC saya di mana kode ini bekerja, jadi saya tidak bisa sepenuhnya menjelaskan mengapa itu tidak bekerja pada TIO.

Salin contoh tempel (yang ;tidak perlu, itu hanya menekan output tambahan dalam 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

Arang , 26 21 15 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

 ³              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 byte

-2 bytes berkat FrownyFrog -2 bytes berkat miles

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

Cobalah online!

Pendekatan awal: J , 29 byte

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

Penjelasan: i.26- kisaran 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+/] - buat tabel 3-baris untuk karakter

   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

&.|:transpos lalu lakukan kata kerja berikutnya ( |.) dan transpos lagi

-|."_1 putar setiap baris n kali

     (-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: konversi ke 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

Cobalah online!


@FrownyFrog Terima kasih! Rupanya saya tidak memeriksa kemungkinan untuk membuat kolom matriks-bijaksana.
Galen Ivanov

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

@miles Terima kasih untuk kode yang hebat!
Galen Ivanov

4

C, 70 69 67 60 64 byte

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

+4 byte untuk membuat fungsi ini dapat digunakan kembali .

Jawaban 60-byte tidak valid yang tidak dapat digunakan kembali:

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

Port of Java 8 answer @Neil 's JavaScript answer .

Cobalah online.


Karena fungsi harus dapat digunakan kembali dan fungsi ini tidak keluar dengan bersih, ia meninggalkan variabel global. Anda membutuhkan i=t=0.
Jonathan Frech

@JonathanFrech Tetap
Kevin Cruijssen

3

APL + WIN, 26 byte

Indeks asal 0

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

Hasilkan matriks nilai indeks integer dari karakter dalam vektor atom APL.

Putar setiap kolom ke bawah dengan nilai nomornya.

Gunakan indeks yang dihasilkan untuk menampilkan karakter dari vektor atom.


3

Vim, 81 79 byte

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

Penjelasan (disederhanakan)

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 byte

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

brainfuck , 121 115 byte

+++[[<+>>++<-]>]<<[-<->]<+<+<----<++<[->>-<<]<[>>[>.[->>>+<<<]>[+[-<+>]>]<<<<<<+>-]<[->+>[->]<<<<<]++++++++++.,<--]

Terima kasih kepada @ JoKing karena telah menghemat 6 byte!

Cobalah online!


115 byte dengan mengutak-atik generasi nomor
Jo King

2
+++[[<+>>++<-]>]benar-benar adalah awal dari segalanya, ya? Terima kasih!
Dennis

3

Japt , 17 byte

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

Menguji


Penjelasan

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, saya punya solusi berbeda yang mungkin atau mungkin tidak cukup untuk menjamin jawaban yang terpisah:;Bå_cÄ é}"@`" ·y
ETHproduksi

Nah sekarang kita sama panjang, saya merasa lebih baik tentang hal itu ;-)
ETHproduksi

@ ETHproductions: terlihat cukup berbeda bagi saya :) Akan melihat apakah saya bisa menemukan solusi yang lebih pendek dengan memetakan Csetelah makan siang. Tidak tahu bagaimana ydan ·berakhir dengan cara yang salah; Saya harus Ctrl+Zmengedit terlalu banyak sebelum masuk Ctrl+A!
Shaggy



2

K4 , 38 byte

Larutan:

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

Contoh:

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

Penjelasan:

9 karakter untuk melakukan rotasi ...

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

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

atau

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

+1! Saya tidak dapat membantu Anda menyimpan byte kembali, tetapi saya bertanya-tanya tentang penggunaan $^x8, tetapi tidak dapat memikirkan var lain dengan panjang yang cukup, mungkin "@INC"tetapi terlalu panjang, dan menggunakan "@-"bukannya $n++, tetapi masih, dengan panjang yang sama. Kecuali itu membantu Anda mengecilkan ini lebih jauh? Kecuali Anda menambahkan -pflag dan memiliki output implisit?
Dom Hastings

1
@HomHastings Ah, menemukan cara untuk mengulang tanpa perlu banyak persiapan
Ton Hospel
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.