Máy cạo râu Kolmogorov


37

Xuất hoặc hiển thị ba dòng văn bản sau, chính xác như chúng được hiển thị bên dưới. Một dòng mới được chấp nhận.

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

Khối văn bản đó giống như khối bên dưới, nhưng trong đó cột thứ n được xoay n lần xuống:

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

Hãy nhớ rằng đây là một thách thức , vì vậy định dạng đầu ra không linh hoạt.


1
Liệu văn bản kết thúc trên một dòng mới? Cụ thể là kết thúc vào '.... z \ n \ n`?
TonMedel 14/2/18

2
@ Không, tối đa phải là một dòng mới
Stewie Griffin

Là một dòng mới hàng đầu có thể chấp nhận?
Dom Hastings

@DomHastings Không, xin lỗi.
Stewie Griffin

(đối với nhiều ngôn ngữ (HTML, ///, Text, Bubblegum) hardcoding những 80 ký tự sẽ được (có thể chứng minh, trừ Bubblegum) ngắn nhất, đó là nhàm chán, xin đừng làm điều đó)
user202729

Câu trả lời:


18

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

Yay, cuối cùng chúng tôi đã làm điều đó! Chúng tôi đã đánh bại đầu ra bằng chữ 88 byte có thể tìm thấy ở phía dưới. Cảm ơn tất cả những người đã tham gia chơi 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 nhờ @StewieGriffin .
-42 byte nhờ @Neil .
-11 byte nhờ @PeterTaylor .
-3 byte nhờ @ OlivierGrégoire .
-6 byte nhờ @ OlivierGrégoire@Neil (Olivier đề xuất một cổng câu trả lời JavaScript của Neil ).

Hãy thử trực tuyến.

Giải trình:

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

Xem ở đây những gì từng phần số học làm, và làm thế nào nó kết thúc ở các ký tự chính xác.


Java 8, 88 byte

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

Chán, nhưng sử dụng vòng quay dự định của các cột sẽ không còn ngắn hơn trong Java nữa .. Tôi đã sửa chữa! Sẽ đăng một giải pháp ngay lập tức để xem nó khác nhau bao nhiêu byte. Rõ ràng sự khác biệt chỉ là -4 byte! : D

Hãy thử trực tuyến.



1
Dựa trên cách tiếp cận CJam của tôi, tôi khá chắc chắn nên có một công thức số học hợp lý đơn giản cho điểm mã tại vị trí (x, y), rất có thể sẽ đánh bại cách tiếp cận 169 byte của bạn và thậm chí có thể là chuỗi ký tự.
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 (đã xóa choàn toàn)
Olivier Grégoire

4
@ OlivierGrégoire Java vượt trội JavaScript? Tôi đã làm gì sai?
Neil

13

Husk , 13 byte

Tzṙṫ26¡m→"Aa 

Lưu ý không gian dấu. Hãy thử trực tuyến!

Giải trình

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 (Ngôn ngữ lập trình 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]

Tôi đã gặp một số vấn đề với trình thông dịch ( https://github.com/drsam94/Spl ), vì vậy nó không nhỏ như tôi nghĩ nó có thể xảy ra. Nhưng ít nhất điều này hoạt động :)


Đây là logic tương tự trong PHP, để làm cho nó dễ dàng hơn một chút để xem những gì đang diễn ra.

<?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
Các bài phát biểu trong âm thanh này giống như một cuốn sách Tiến sĩ Seuss mất trí. : ^ 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):''

Chỉnh sửa: Đã lưu 11 byte nhờ @Ryan. Bây giờ ngắn hơn 10 byte so với nghĩa đen!

JavaScript (Node.js) , 64 byte

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

Hãy thử trực tuyến! Cảm ơn @Ryan.


2
Bạn có thể lưu 11 byte với đệ quy: f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''và thêm 11 byte trong môi trường Nút như một bên: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

Đã lưu 2 byte nhờ Erik the Outgolfer

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

Hãy thử trực tuyến!

Giải trình

ž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 Tôi cảm thấy εNnên là một điều. Kết hợp hai ý tưởng của vyNFÁ])ø»và của bạn.
Bạch tuộc ma thuật Urn

@MagicOctopusUrn: Vâng, tôi thường muốn Nsử dụng ε. Nó không phù hợp về mặt kỹ thuật vì εkhông phải là một vòng lặp, mặc dù đôi khi chúng ta sử dụng nó như vậy, thật tuyệt khi có nó.
Emigna

8

CJam (18 byte)

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

Bản demo trực tuyến

Mổ xẻ

Cách tiếp cận rõ ràng là tạo các dòng gốc, zip, xoay với ee::m>và zip trở lại. Nhưng ee::khá dài và ngắn hơn để tạo các cột trực tiếp.

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

Hãy thử trực tuyến!

Điều này hoạt động bằng cách loại bỏ 31.333..khỏi ký tự trước đó, thêm vào 97khi điểm mã trước đó nhỏ hơn 60 và trừ 26vào cuối mỗi dòng.


8

R , 64 63 byte

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

Hãy thử trực tuyến!

-1 byte nhờ Giuseppe

Tôi đã đạt được điều này thông qua khá nhiều thử nghiệm và sai sót, vì vậy tôi đang vật lộn với một lời giải thích ngắn gọn. Về cơ bản, thay vì mã ký tự, tôi bắt đầu với một chuỗi đơn giản hơn 1:81 đại diện cho khối văn bản gốc (3 * 26 cộng với 3 dòng mới) và kiểm tra các chỉ số về nơi các giá trị này kết thúc trong khối xoay. Điều này tuân theo một chuỗi thông thường giảm 26 lần mỗi lần, modulo 81 (hoặc tương đương, tăng 55 mod 81). Sau đó, đó là vấn đề tái tạo chuỗi đó (0:80*55)%%81+1]), ánh xạ tới các giá trị unicode thực c(32:57,10,65:90,10,97:122,10), chuyển đổi thành ký tự và in.


làm tốt! Tôi sẽ nhận được tiền thưởng này, mặc dù tôi thực sự mong đợi một giải pháp khác trong phạm vi 80+ byte, vì vậy tôi nghĩ rằng tôi sẽ tăng tiền thưởng lên 100.
Giuseppe

@Giuseppe Đừng lo! Đó là về thách thức nhiều hơn là đại diện phải trung thực.
dùng2390246

à, bạn có thể lưu một byte bằng cách sử dụng 55thay vì -26kể từ -26 == 55(mod 81).
Giuseppe

@Giuseppe Cảm ơn lời đề nghị và tiền thưởng!
dùng2390246

6

Japt , 17 15 byte

"@`"
;By@=cÄ é

Kiểm tra nó trực tuyến!

Giải trình

"@`"         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 15-byters khác có thể:

;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

Hãy thử trực tuyến!

Giải trình

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
Giải thích rất hay. Tôi đặc biệt thích: "Đẩy chuỗi tìm kiếm ngẫu nhiên này." : P
Stewie Griffin

2
@StewieGriffin xin lỗi, chuỗi đó đã phải đi.
Martin Ender

5

MATL , 16 byte

1Y2tk9V:v26:l&YS

Hãy thử trực tuyến!

Giải trình

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
Rất tuyệt :) Tôi vẫn phải vật lộn khi phải thay đổi định dạng chức năng I / O mặc định ... :(
Stewie Griffin

1
oohh rất đẹp với thứ tự của các chuỗi để sử dụng 1:26như là sự thay đổi. Tôi nên thử điều đó trong câu trả lời R của mình ...
Giuseppe

1
@StewieGriffin Meta-function &là một bổ sung tuyệt vời, từ ý tưởng của Suever :-)
Luis Mendo

@Giuseppe Có, điều đó đã lưu một byte :-)
Luis Mendo

5

Thạch , 13 byte

26“ aA‘ẋs+ḶỌY

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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

Đã lưu 13 byte nhờ thuật sĩ phức tạp của @TonHosp !

Hãy thử trực tuyến!


Của bạn $i++là chính đáng $_và bạn có thể sử dụng saythay vì printvậy đây thực sự là50
TonMedel 14/2/18

Mmm, và thật dễ dàng để thoát khỏi {}bản đồ quá 49:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
TonMedel 14/2/18

@TonHeach Vâng, tất nhiên! Cảm ơn!
Dom Hastings

Thiết kế lại vòng lặp cho 47: print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26. Thật không may saycho một dòng mới quá nhiều.
Tôn Hospel

Và một niềm vui 48:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
TonMedel 14/2/18

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

Hãy thử trực tuyến!

R là khủng khiếp khi thao tác chuỗi và mặc dù nó có một số tích hợp ma trận gọn gàng, phép quay là một việc khác mà nó không thực hiện rất dễ dàng. Tôi sẽ vui vẻ đưa tiền thưởng cho bất cứ ai có thể chơi golf cho tôi ở R.

Mặc dù tôi đã tìm thấy câu trả lời ngắn hơn, tôi vẫn sẽ trao phần thưởng 50 rep cho câu trả lời R khác đầu tiên ngắn hơn 88 byte.

Tôi cho rằng tôi sẽ tự thưởng cho mình tiền thưởng nếu có thể, nhưng đây là toàn bộ hai byte ngắn hơn câu trả lời "nhàm chán"! Tôi tránh quay vòng bằng cách chỉ sử dụng penchant của R để tái chế.

EDIT: câu trả lời của user2390246 hoàn toàn vượt xa tôi và tôi sẽ được thưởng 100 điểm vì giải pháp đó vượt trội hơn nhiều.

Để đến đây, tôi đã giải mã đầu ra mong muốn cho các điểm mã ASCII của họ bằng utf8ToInt(loại bỏ các dòng mới), xây dựng một ma trận và chạy difftrên chúng để có được sự khác biệt theo cột. Lưu ý đến tính tuần hoàn ở đó, tôi bắt đầu xây dựng ma trận theo kiểu chơi gôn, hy vọng sẽ sử dụng diffinvđể tạo lại bản gốc.

Nhờ tính tuần hoàn, chúng ta có thể tạo lại diffma trận ed bằng cách buộc R tái chế với độ dài không nhiều và trích xuất các cột mà chúng ta thực sự muốn:

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

Sau đó, chúng tôi đảo ngược quá trình này, diffinvđể tạo lại các điểm mã, nối một hàng 10(dòng mới) xuống dưới cùng, đổi lại thành ASCII intToUtf8catkết quả.


3
Bạn có thể sắp xếp cho mình một tiền thưởng. Tiền thưởng sẽ tiêu tốn của bạn x rep và bạn sẽ nhận được x rep từ nó ... Vì vậy, hãy xem xét nó!
Stewie Griffin


5

Stax , 14 12 byte

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

Chạy và gỡ lỗi nó

Giải nén, không được chỉnh sửa và nhận xét, nó trông như thế này.

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

Chạy cái này

Chương trình này chỉ sử dụng các tính năng đã có sẵn kể từ khi phát hành stax ban đầu, nhưng rõ ràng tôi đã quên mất Kbản đồ chéo khi ban đầu tôi viết câu trả lời này.

Một điều gần như thú vị cần lưu ý về câu trả lời này là đây Rlà một hướng dẫn không cần thiết vì Kngầm biến số nguyên thành phạm vi. Tuy nhiên, không có cách nào để đẩy 326không có thêm byte ở giữa.


4

PowerShell , 53 byte

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

Hãy thử trực tuyến!

Tôi thấy điều này tương tự như câu trả lời Perl của Dom, nhưng tôi đã đến đó một cách độc lập.

Điều này khai thác thực tế là mô hình đi Symbol - Lowercase - Capital, ngay cả khi gói các dòng mới ( 8 - z - Aví dụ), và do đó chỉ cần thêm phần bù thích hợp (được chọn qua $j++%3) vào số hiện tại $_trước khi -joinghép chúng thành một chuỗi. Điều đó đã được thực hiện ba lần để đưa ra ba dòng (bảo toàn $jgiữa các lần lặp). Ba dòng này được để lại trên đường ống và ẩn Write-Outputcho chúng ta những dòng mới miễn phí.


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']là mảng 2d không được bảo vệ của các ký tự, [n,mod1(i-n,3)]lập chỉ mục vào mảng đó với góc xoay phù hợp. prodlấy một Vector các ký tự thành một chuỗi (vì phép nhân được sử dụng để nối chuỗi). Có hai cách hiểu Vector lồng nhau dẫn đến một Vector chứa 3 chuỗi, sau đó println.in từng chuỗi trong Vector theo sau là một dòng mới.

TIO thiếu phương thức thích hợp để nhân (với prod) hai ký tự để có được Chuỗi. Tôi biết rằng phương pháp này đã được thêm vào gần đây, nhưng phiên bản TIO có vẻ giống với phiên bản trên PC của tôi nơi mã này hoạt động, vì vậy tôi không thể giải thích đầy đủ lý do tại sao nó không hoạt động trên TIO.

Sao chép ví dụ dán ( ;không cần thiết, nó chỉ thay thế đầu ra thêm trong 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

Than , 26 21 15 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải trình:

 ³              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 byte nhờ FrownyFrog -2 byte nhờ dặm

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

Hãy thử trực tuyến!

Cách tiếp cận ban đầu: J , 29 byte

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

Giải thích: i.26- phạm vi 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+/] - tạo bảng 3 hàng cho các ký tự

   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

&.|:hoán vị sau đó làm động từ tiếp theo ( |.) và hoán chuyển lại

-|."_1 xoay mỗi hàng n lần

     (-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: chuyển đổi sang 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

Hãy thử trực tuyến!


@FrownyFrog Cảm ơn bạn! Rõ ràng tôi đã không kiểm tra khả năng tạo cột ma trận.
Galen Ivanov

2
|:u:(<26)2&(|.>:)32 65 97tiết kiệm 2 byte.
dặm

@miles Cảm ơn mã tuyệt vời!
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 để làm cho chức năng có thể tái sử dụng .

Câu trả lời 60 byte không hợp lệ không thể sử dụng lại:

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

Cổng câu trả lời Java 8 của tôi @Neil là câu trả lời JavaScript .

Hãy thử trực tuyến.


Vì các chức năng phải được tái sử dụng và chức năng này không thoát ra một cách sạch sẽ, nó để lại các biến toàn cục phía sau. Bạn cần một i=t=0.
Jonathan Frech

@JonathanFrech Cố định
Kevin Cruijssen

3

APL + THẮNG, 26 byte

Chỉ số gốc 0

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

Tạo một ma trận các giá trị chỉ số nguyên của các ký tự trong vectơ nguyên tử APL.

Xoay mỗi cột xuống dưới theo giá trị số của nó.

Sử dụng các chỉ số kết quả để hiển thị các ký tự từ vectơ nguyên tử.


3

Vim, 81 79 byte

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

Giải thích (đơn giản hóa)

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

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

Cảm ơn @JoKing vì đã lưu 6 byte!

Hãy thử trực tuyến!


115 byte bằng cách thay đổi thế hệ số
Jo King

2
+++[[<+>>++<-]>]thực sự là bắt đầu của mọi thứ, phải không? Cảm ơn!
Dennis

3

Japt , 17 byte

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

Kiểm tra nó


Giải trình

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

Ôi, tôi đã có một giải pháp khác có thể hoặc không đủ để đảm bảo một câu trả lời riêng biệt:;Bå_cÄ é}"@`" ·y
Sản phẩm ETH

Giờ thì chúng ta cùng chiều dài, tôi cảm thấy tốt hơn về điều đó ;-)
ETHproductions 14/2/18

@ETHproductions: có vẻ đủ khác với tôi :) Sẽ xem liệu tôi có thể đưa ra giải pháp ngắn hơn bằng cách lập bản đồ Csau bữa trưa. Không biết làm thế nào y·kết thúc sai cách 'vòng; Tôi phải có Ctrl+Zed quá nhiều lần trước khi Ctrl+Aing!
Xù xì



2

K4 , 38 byte

Dung dịch:

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

Thí dụ:

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

Giải trình:

9 ký tự để thực hiện xoay ...

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

hoặc là

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

+1! Tôi không thể giúp bạn lưu lại bất kỳ byte nào, nhưng tôi băn khoăn về việc sử dụng $^x8, nhưng không thể nghĩ ra một var khác có đủ độ dài, có lẽ "@INC"nhưng nó quá dài và sử dụng "@-"thay vì $n++, nhưng vẫn có cùng độ dài. Trừ khi điều đó giúp bạn thu nhỏ điều này hơn nữa? Trừ khi bạn thêm -pcờ và có đầu ra ngầm?
Dom Hastings

1
@DomHastings Ah, đã tìm được cách lặp mà không cần chuẩn bị quá nhiều
TonMedel 14/2/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.