Kolmogorov จำแลง


37

เอาท์พุทหรือแสดงข้อความสามบรรทัดต่อไปนี้ตรงตามที่แสดงด้านล่าง ยอมรับการขึ้นบรรทัดใหม่

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

บล็อคข้อความนั้นเหมือนกันกับด้านล่าง แต่คอลัมน์ที่ n ถูกหมุน n คูณลง:

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

โปรดทราบว่านี่เป็นท้าทายที่ดังนั้นรูปแบบผลลัพธ์จึงไม่ยืดหยุ่น


1
ข้อความลงท้ายด้วยการขึ้นบรรทัดใหม่หรือไม่? โดยเฉพาะอย่างยิ่งที่จะจบที่ '.... z \ n \ n`?
Ton Hospel

2
@ ไม่, มันควรจะเป็นหนึ่งบรรทัดขึ้นท้ายใหม่
Stewie Griffin

ขึ้นบรรทัดใหม่เป็นที่ยอมรับหรือไม่
Dom Hastings

@DomHastings ไม่ขอโทษ
Stewie Griffin

(สำหรับหลาย ๆ ภาษา (HTML, ///, Text, Bubblegum) hardcoding 80 ตัวอักษรนั้นจะเป็น (ชั่วคราวยกเว้น Bubblegum) ที่สั้นที่สุดน่าเบื่อโปรดอย่าทำอย่างนั้น
user202729

คำตอบ:


18

Java 8, 169 162 150 146 116 113 106 95 94 93 92 91 90 84 ไบต์

ใช่แล้วในที่สุดเราก็ทำได้! เราได้ผลลัพธ์ที่แท้จริงที่ 88 ไบต์ที่ด้านล่าง ขอบคุณทุกคนที่เข้าร่วมเล่นกอล์ฟ!

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 ไบต์ขอบคุณที่@StewieGriffin
-42 ไบต์ขอบคุณที่@Neil
-11 ไบต์ขอบคุณที่@PeterTaylor
-3 ไบต์ขอบคุณที่@ OlivierGrégoire
-6 bytes ขอบคุณ@ OlivierGrégoireและ@Neil (Olivier แนะนำพอร์ตของคำตอบ JavaScript ของ Neil )

ลองออนไลน์

คำอธิบาย:

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

ดูที่นี่สิ่งที่แต่ละส่วนเลขคณิตทำและวิธีการที่จะกลายเป็นตัวละครที่ถูกต้อง


Java 8, 88 ไบต์

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

น่าเบื่อแต่การใช้การหมุนคอลัมน์อย่างตั้งใจจะไม่สั้นลงใน Java แน่นอน ..ฉันยืนถูกต้อง! จะโพสต์โซลูชันในทันทีเพื่อดูว่าไบต์มีความแตกต่างกันมากน้อยเพียงใด เห็นได้ชัดว่ามีความแตกต่างเพียง-4 ไบต์! : D

ลองออนไลน์



1
จากวิธีการของ CJam ของฉันฉันค่อนข้างมั่นใจว่าควรจะมีสูตรทางคณิตศาสตร์ที่เรียบง่ายพอสมควรสำหรับจุดโค้ดที่ตำแหน่ง(x, y)ซึ่งน่าจะเอาชนะวิธี 169 ไบต์ของคุณและอาจเป็นสตริงตัวอักษร
Martin Ender

1
116 ไบต์: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 ไบต์ (ลบออกcทั้งหมด)
Olivier Grégoire

4
@ OlivierGrégoire Java ใช้งานจาวาสคริปต์ได้หรือไม่ ฉันทำผิดอะไร?
Neil

13

Husk , 13 ไบต์

Tzṙṫ26¡m→"Aa 

สังเกตพื้นที่ต่อท้าย ลองออนไลน์!

คำอธิบาย

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 (ภาษาการเขียนโปรแกรมของเช็คสเปียร์), 1679 1618 1600 ไบต์

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

ฉันมีปัญหาบางอย่างกับล่าม ( https://github.com/drsam94/Spl ) ดังนั้นมันจึงไม่เล็กอย่างที่คิด แต่อย่างน้อยก็ใช้งานได้ :)


นี่คือตรรกะเดียวกันใน PHP เพื่อให้ง่ายขึ้นเล็กน้อยในการดูว่าเกิดอะไรขึ้น

<?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
การกล่าวสุนทรพจน์ในเสียงนี้เหมือนหนังสือดร. Seuss ที่เสื่อมทราม : ^ D
DLosc

10

JavaScript (ES6), 86 75 ไบต์

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

แก้ไข: บันทึก 11 ไบต์ขอบคุณ @Ryan ตอนนี้ 10 ไบต์สั้นกว่าตัวอักษร!

JavaScript (Node.js)ขนาด 64 ไบต์

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

ลองออนไลน์! ขอบคุณ @Ryan


2
คุณสามารถบันทึก 11 ไบต์ด้วยการเรียกซ้ำ: f=(i=k=0)=>i-80?String.fromCharCode(++i%27?(4-k++%3)*32%97+i%27:10)+f(i):''และอีก 11 รายการในสภาพแวดล้อมของโหนด:f=(i=k=0)=>i-80?Buffer([++i%27?(4-k++%3)*32%97+i%27:10])+f(i):''
Ry-

8

05AB1E , 17 15 ไบต์

บันทึก 2 ไบต์ด้วยErik the Outgolfer

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

ลองออนไลน์!

คำอธิบาย

ž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 ฉันรู้สึกว่าεNควรจะเป็นสิ่งที่ รวมสองแนวคิดvyNFÁ])ø»และของคุณเข้าด้วยกัน
Magic Octopus Urn

@MagicOctopusUrn: ใช่ผมมักจะมีความต้องการในขณะที่ใช้N εในทางเทคนิคมันไม่พอดีกับที่εไม่ใช่การวนรอบแม้ว่าบางครั้งเราจะใช้มันเช่นนี้มันก็ดีถ้ามี
Emigna

8

CJam (18 ไบต์)

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

การสาธิตออนไลน์

การผ่า

วิธีการที่ชัดเจนคือการสร้างบรรทัดซิปหมุนด้วยee::m>และย้อนกลับ แต่ee::ค่อนข้างยาวและสั้นกว่าในการสร้างคอลัมน์โดยตรง

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 ไบต์

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

ลองออนไลน์!

วิธีนี้ใช้งานได้โดยลบออก31.333..จากอักขระก่อนหน้าเพิ่ม97เมื่อ codepoint ก่อนหน้านี้น้อยกว่า 60 และลบ26ที่ท้ายบรรทัดแต่ละบรรทัด


8

R , 64 63 ไบต์

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

ลองออนไลน์!

-1 ไบต์ขอบคุณ Giuseppe

ฉันมาถึงที่นี่ผ่านการทดลองและข้อผิดพลาดเล็กน้อยดังนั้นฉันจึงลำบากกับคำอธิบายที่กระชับ โดยพื้นฐานแล้วแทนที่จะเป็นรหัสตัวละครฉันเริ่มต้นด้วยลำดับที่ง่ายขึ้นที่ 1:81 ที่แสดงถึงบล็อกข้อความต้นฉบับ (3 * 26 บวก 3 บรรทัดใหม่) และตรวจสอบดัชนีที่ค่าเหล่านี้อยู่ในบล็อกที่หมุน นี่เป็นไปตามลำดับปกติที่ลดลง 26 ในแต่ละครั้ง modulo 81 (หรือเทียบเท่าเพิ่มขึ้น 55 mod 81) จากนั้นมันก็เป็นเรื่องของการสร้างลำดับ(0:80*55)%%81+1])นั้นใหม่การจับคู่กับค่ายูนิโค้ดตัวจริงc(32:57,10,65:90,10,97:122,10)แปลงตัวละครและการพิมพ์


ทำได้ดี! ฉันจะได้รับรางวัลนี้ถึงแม้ว่าฉันจะคาดหวังว่าจะมีวิธีแก้ปัญหาอื่นในช่วง 80+ ไบต์ดังนั้นฉันคิดว่าฉันจะได้รับรางวัลถึง 100
Giuseppe

@Giuseppe ไม่ต้องกังวล! มันเป็นเรื่องของความท้าทายมากกว่าตัวแทนที่จะซื่อสัตย์
user2390246

อาคุณสามารถบันทึกไบต์ที่ใช้55แทน-26ตั้งแต่-26 == 55(mod 81)
Giuseppe

@iuseppe ขอบคุณสำหรับคำแนะนำและสำหรับความโปรดปราน!
user2390246

6

Japtap , 17 15 ไบต์

"@`"
;By@=cÄ é

ทดสอบออนไลน์!

คำอธิบาย

"@`"         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

15 ตัวอื่น ๆ ที่เป็นไปได้ 15 ไบต์:

;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 ไบต์

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

ลองออนไลน์!

คำอธิบาย

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
คำอธิบายที่ดีมาก ฉันชอบมาก: "กดสตริงที่มีลักษณะสุ่มนี้" : P
Stewie Griffin

2
@StewieGriffin ขอโทษที่ต้องไป
Martin Ender

5

MATL , 16 ไบต์

1Y2tk9V:v26:l&YS

ลองออนไลน์!

คำอธิบาย

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
ดี :) ฉันยังคงดิ้นรนเมื่อฉันต้องเปลี่ยนรูปแบบฟังก์ชั่นเริ่มต้นของ I / O ... :(
Stewie Griffin

1
ดีมากด้วยคำสั่งของสตริงที่จะใช้1:26เป็นกะ ฉันควรจะลองว่าในคำตอบของฉัน ... R
จูเซปเป้

1
@StewieGriffin Meta-function &นั้นยอดเยี่ยมจากความคิดของ Suever :-)
Luis Mendo

@Giuseppe ใช่นั่นช่วยบันทึก byte :-)
Luis Mendo

5

เยลลี่ขนาด 13 ไบต์

26“ aA‘ẋs+ḶỌY

ลองออนไลน์!

มันทำงานอย่างไร

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 ไบต์

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

บันทึกแล้ว 13 ไบต์ด้วยพ่อมดมหัศจรรย์ของ@TonHospel !

ลองออนไลน์!


$i++เป็นของคุณ$_และคุณสามารถใช้sayแทนprintสิ่งนี้ได้จริงๆ50
Ton Hospel

อืมและมันก็ง่ายที่จะกำจัด{}ในแผนที่ด้วย49:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
Ton Hospel

@TonHospel ใช่แน่นอน! ขอบคุณ!
Dom Hastings

ปรับเปลี่ยนการออกแบบห่วงให้:47 print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26น่าเสียดายที่มีsayหนึ่งบรรทัดขึ้นบรรทัดใหม่มากเกินไป
Ton Hospel

และสนุก48:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
Ton Hospel

5

R , 88 86 ไบต์

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

ลองออนไลน์!

R นั้นแย่มากที่การจัดการกับสตริงและแม้ว่ามันจะมีตัวเมทริกซ์ที่เรียบร้อย แต่การหมุนก็เป็นอีกสิ่งหนึ่งที่ไม่สามารถทำได้ง่ายนัก ฉันจะให้ความสุขอย่างมีความสุขกับทุกคนที่สามารถออกไปเล่นกอล์ฟกับฉันในอาร์

แม้ฉันจะพบคำตอบที่สั้นกว่าฉันจะยังคงให้รางวัลตัวแทน 50 รางวัลกับคำตอบ R อื่น ๆ แรกที่สั้นกว่า 88 ไบต์

ฉันคิดว่าฉันจะมอบรางวัลให้ตัวเองถ้าทำได้ แต่นี่คือทั้งสองไบต์ที่สั้นกว่าคำตอบ "น่าเบื่อ"! ฉันหลีกเลี่ยงการหมุนเพียงแค่ใช้ความชอบของ R ในการรีไซเคิล

แก้ไข: คำตอบของผู้ใช้ 2390246 outgolfed ฉันอย่างสมบูรณ์และฉันจะได้รับรางวัล 100 จุดรางวัลตั้งแต่การแก้ปัญหาที่เหนือกว่า

เพื่อให้ได้ที่นี่ฉันถอดชิ้นส่วนเอาต์พุตที่ต้องการไปยังจุดโค้ด ASCII ของพวกเขาด้วยutf8ToInt(ลบการขึ้นบรรทัดใหม่) สร้างเมทริกซ์และวิ่งdiffบนพวกเขา เมื่อสังเกตถึงช่วงเวลานั้นฉันตั้งใจจะสร้างเมทริกซ์ในรูปแบบของกอล์ฟโดยหวังว่าจะใช้diffinvสร้างต้นฉบับขึ้นมาใหม่

ด้วยระยะเวลาเราสามารถสร้างdiffเมทริกซ์ ed ใหม่โดยบังคับให้ R รีไซเคิลด้วยความยาวไม่คูณและแยกคอลัมน์ที่เราต้องการ:

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

จากนั้นเรากลับกระบวนการนี้โดยdiffinvสร้างจุดรหัสต่อท้ายแถวของ10(บรรทัดใหม่) ที่ด้านล่างเปลี่ยนกลับเป็น ASCII ด้วยintToUtf8และcatผลลัพธ์


3
คุณสามารถให้รางวัลกับตัวเองได้ เงินรางวัลจะทำให้คุณเสียค่าใช้จ่าย x rep และคุณจะได้รับ x rep จากมัน ... ลองคิดดูสิ!
Stewie Griffin


5

Stax , 14 12 ไบต์

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

เรียกใช้และแก้ไขข้อบกพร่อง

คลายกล่อง ungolfed และแสดงความคิดเห็นมันมีลักษณะเช่นนี้

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

เรียกใช้อันนี้

โปรแกรมนี้ใช้เฉพาะฟีเจอร์ที่มีให้ตั้งแต่ stax รุ่นแรก แต่เห็นได้ชัดว่าฉันลืมKcross-map เมื่อฉันเขียนคำตอบนี้

สิ่งที่น่าสนใจอย่างหนึ่งที่ควรทราบเกี่ยวกับคำตอบนี้Rคือคำสั่งที่ไม่จำเป็นเพราะKนัยจะเปลี่ยนจำนวนเต็มเป็นช่วง อย่างไรก็ตามไม่มีวิธีที่จะผลักดัน3และ26ไม่มีไบต์พิเศษอยู่


4

PowerShell , 53 ไบต์

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

ลองออนไลน์!

ฉันเห็นว่ามันคล้ายกับคำตอบ Perl ของ Dom แต่ฉันมาถึงด้วยตนเอง

วิธีนี้ใช้ประโยชน์จากความจริงที่ว่ารูปแบบจะดำเนินการSymbol - Lowercase - Capitalแม้ว่าจะมีการตัดบรรทัดใหม่ ( 8 - z - Aตัวอย่างเช่น) และดังนั้นจึงเพิ่มออฟเซ็ตที่เหมาะสม (เลือกผ่าน$j++%3) ไปยังหมายเลขปัจจุบัน$_ก่อนที่จะ-joinผสานเข้าด้วยกันเป็นสตริงเดียว เสร็จแล้วสามครั้งเพื่อหาเส้นสามเส้น (รักษา$jระหว่างการวนซ้ำ) ทั้งสามบรรทัดนั้นถูกปล่อยไว้บนไปป์ไลน์และโดยนัยWrite-Outputทำให้เรามีการขึ้นบรรทัดใหม่ฟรี


4

Julia 0.6 , 79 bytes

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']คืออาร์เรย์ของอักขระ 2d ที่ไม่ได้ถูก[n,mod1(i-n,3)]จัดทำดัชนีลงในอาร์เรย์นั้นพร้อมกับการหมุนที่เหมาะสม prodนำ Vector of Characters ไปยัง String (เนื่องจากการคูณจะใช้สำหรับการรวมสตริง) มีความเข้าใจเวกเตอร์ซ้อนกันสองตัวทำให้เกิด Vector ประกอบด้วย 3 สตริงจากนั้นprintln.พิมพ์แต่ละสตริงใน Vector ตามด้วยบรรทัดใหม่

TIO ไม่มีวิธีการที่เหมาะสมในการคูณ (ด้วยprod) อักขระสองตัวเพื่อรับสตริง ฉันรู้ว่าวิธีการนี้ได้รับการเพิ่มบ้างเมื่อเร็ว ๆ นี้ แต่รุ่น TIO ดูเหมือนจะเหมือนกับรุ่นบนพีซีของฉันที่ใช้รหัสนี้ได้ดังนั้นฉันจึงไม่สามารถอธิบายได้อย่างสมบูรณ์ว่าทำไมมันไม่ทำงานบน TIO

คัดลอกตัวอย่างวาง ( ;ไม่จำเป็นเพียงแค่เพิ่มเอาต์พุตพิเศษใน 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

ถ่าน , 26 21 15 ไบต์

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

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

 ³              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 ไบต์

-2 ไบต์ขอบคุณ FrownyFrog -2 ไบต์ขอบคุณไมล์

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

ลองออนไลน์!

วิธีการเริ่มต้น: J , 29 ไบต์

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

คำอธิบาย: i.26- ช่วง 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+/] - สร้างตาราง 3 แถวสำหรับตัวละคร

   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

&.|:เปลี่ยนจากนั้นทำคำกริยาถัดไป ( |.) และสลับอีกครั้ง

-|."_1 หมุนแต่ละแถว 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: แปลงเป็น 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

ลองออนไลน์!


@FrownyFrog ขอขอบคุณ! เห็นได้ชัดว่าฉันไม่ได้ตรวจสอบความเป็นไปได้ในการสร้างเมทริกซ์คอลัมน์ที่ชาญฉลาด
Galen Ivanov

2
|:u:(<26)2&(|.>:)32 65 97บันทึก 2 ไบต์
ไมล์

@miles ขอบคุณสำหรับรหัสที่ยอดเยี่ยม!
Galen Ivanov

4

C, 70 69 67 60 64 ไบต์

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

+4 ไบต์เพื่อทำให้ฟังก์ชั่นสามารถใช้ซ้ำได้

คำตอบ 60 ไบต์ไม่ถูกต้องที่ไม่สามารถใช้ซ้ำได้:

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

ท่าเรือของฉัน Java 8 คำตอบ @Neilคำตอบ JavaScript 's

ลองออนไลน์


เนื่องจากฟังก์ชั่นจะต้องสามารถนำกลับมาใช้ใหม่ได้และฟังก์ชั่นนี้ไม่ได้ออกอย่างสมบูรณ์มันจึงทิ้งตัวแปรโกลบอลไว้ i=t=0คุณจำเป็นต้องมี
Jonathan Frech


3

APL + WIN, 26 ไบต์

ดัชนีกำเนิด 0

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

สร้างเมทริกซ์ของค่าดัชนีจำนวนเต็มของตัวละครในเวกเตอร์อะตอมของ APL

หมุนแต่ละคอลัมน์ลงตามค่าตัวเลข

ใช้ดัชนีผลลัพธ์เพื่อแสดงอักขระจากเวกเตอร์อะตอมมิก


3

เป็นกลุ่ม81 79 ไบต์

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

คำอธิบาย (ประยุกต์)

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

brainfuck , 121 115 ไบต์

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

ขอบคุณ @JoKing สำหรับการบันทึก 6 ไบต์!

ลองออนไลน์!


115 ไบต์โดยเล่นซอกับการสร้างหมายเลข
Jo King

2
+++[[<+>>++<-]>]จุดเริ่มต้นของทุกสิ่งจริงๆใช่มั้ย ขอบคุณ!
เดนนิส

3

Japt , 17 ไบต์

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

ทดสอบมัน


คำอธิบาย

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 ฉันมีวิธีแก้ปัญหาที่แตกต่างกันซึ่งอาจหรืออาจจะไม่เพียงพอที่จะรับประกันคำตอบแยกต่างหาก:;Bå_cÄ é}"@`" ·y
ETHproductions

ทีนี้ตอนนี้เราก็มีความยาวเท่ากันฉันรู้สึกดีขึ้นเกี่ยวกับมัน ;-)
ETHproductions

@ ETHproductions: มันดูแตกต่างไปจากฉัน :) จะไปดูว่าฉันจะคิดวิธีแก้ปัญหาสั้น ๆ ด้วยการทำแผนที่Cหลังอาหารกลางวันหรือไม่ ไม่รู้รอบyและวิธี·ผิด 'รอบ; ฉันต้องอ่านCtrl+Zหลายครั้งเกินไปก่อนเข้าCtrl+A!
ปุย



2

K4 , 38 ไบต์

วิธีการแก้:

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

ตัวอย่าง:

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

คำอธิบาย:

9 ตัวอักษรเพื่อทำการหมุน ...

-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 ไบต์

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

หรือ

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

+1! ฉันไม่สามารถช่วยให้คุณบันทึกไบต์ใด ๆ กลับมา แต่ฉันสงสัยเกี่ยวกับการใช้$^x8แต่ไม่สามารถคิด var อื่นที่มีความยาวเพียงพอบางที"@INC"จะนานเกินไป แต่การใช้งาน"@-"แทนที่จะใช้$n++แต่ก็ยังมีความยาวเท่าเดิม นอกจากว่าจะช่วยให้คุณลดขนาดนี้อีกหรือไม่ ถ้าคุณไม่เพิ่ม-pแฟล็กและมีเอาต์พุตโดยนัย?
Dom Hastings

1
@DomHastings Ah พบวิธีที่จะวนซ้ำโดยไม่จำเป็นต้องเตรียมตัวมากนัก
Ton Hospel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.