Колмогоров перемикач


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"?
Тон Євангелія

2
@Та ні, це максимум має бути один кінцевий новий рядок
Стюі Гріффін

Чи прийнятний провідний новий рядок?
Дом Гастінгс

@DomHastings Ні, вибачте
Стюі Гріффін

(для багатьох мов (HTML, ///, Text, Bubblegum) жорстке кодування цих 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 байт завдяки @ OlivierGrégoire та @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-байтний підхід і, можливо, навіть буквальний рядок.
Мартін Ендер

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;}
Ніл

1
Ахем, 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;}
Пітер Тейлор

1
92 байти (вилучено cповністю)
Олів'є Грегоаре

4
@ OlivierGrégoire Java перевершує JavaScript? Що я зробив не так?
Ніл

13

Лушпиння , 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
Виступи в цьому звучать як дементована книга доктора Сеуса. : ^ 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):''
17–18

8

05AB1E , 17 15 байт

Збережено 2 байти завдяки Еріку Переверхувача

ž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Á])ø»і вашої.
Чарівний восьминіг Урна

@MagicOctopusUrn: Так, я часто хотів Nкористуватися ε. Це технічно не підходить як εцикл, хоча, як ми іноді використовуємо його як таке, було б непогано мати його.
Емінья

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коли попередня кодова точка менше 60, і віднімаючи 26в кінці кожного рядка.


8

R , 64 63 байти

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

Спробуйте в Інтернеті!

-1 байт завдяки Джузеппе

Я прийшов до цього через досить багато спроб і помилок, тому борюся з стислим поясненням. По суті, замість символьних кодів я почав з більш простої послідовності 1:81, що представляє оригінальний блок тексту (3 * 26 плюс 3 нові рядки), і вивчив показники, де ці значення опиняються в обертовому блоці. З цього випливає звичайна послідовність, яка щоразу падає на 26, модуль 81 (або еквівалентно збільшується на 55 мод 81). Тоді справа полягала у відтворенні цієї послідовності (0:80*55)%%81+1]), зіставлення реальних значень унікоду c(32:57,10,65:90,10,97:122,10), перетворенні на символи та друку.


молодець! Я буду щедрий за це, хоча я дійсно очікував іншого рішення в діапазоні 80+ байтів, тому думаю, що я підніму ще більше до 100.
Джузеппе

@Giuseppe Не хвилюйся! Йдеться більше про виклик, ніж про репутацію.
користувач2390246

ах, ви можете зберегти байти , використовуючи 55замість того , щоб з -26тих пір -26 == 55(мод 81).
Джузеппе

@Giuseppe Дякую за пропозицію та за щедрість!
користувач2390246

6

Japt , 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

7 інших можливих 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
Стюі Гріффін

2
@StewieGriffin вибачте, що цей рядок повинен був пройти.
Мартін Ендер

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
Приємно :) Я все ще борюся, коли мені потрібно змінити формати функцій вводу-виводу за замовчуванням ... :(
Стюі Гріффін

1
oohh дуже приємно з порядком струн, щоб використовувати 1:26як зміщення. Я повинен спробувати це у своїй відповіді на R ...
Джузеппе,

1
Мета-функція @StewieGriffin &була чудовим доповненням від ідеї Сьювера :-)
Луїс Мендо

@Giuseppe Так, це врятувало байт :-)
Луїс Мендо

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
Тон Євангелія,

Ммм, і {}на карті також легко позбутися 49:say map$/x/26|52/.chr$_%26+(32,65,97)[$_%3],0..77
Тон Євангелія

@TonHospel Так, звичайно! Спасибі!
Дом Гастінгс

Перебудова циклу дає 47: print map{chr$n+++$_,$/x!($n%=26)}(32,97,65)x26. На жаль, sayдає один новий рядок занадто багато.
Тон Євангелія

І весело 48:say map$/x/.A/.chr$n++%26+(65,32,97)[$n%3],A..BZ
Тонне Євангеліє

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 user2390246 повністю перевершив мене, і я отримаю нагороду в 100 балів, оскільки це рішення набагато перевершує.

Щоб потрапити сюди, я деконструював потрібний вихід до їх ASCII кодових точок за допомогою utf8ToInt(видалення нових рядків), побудував матрицю та запустив diffна нихm, отримавши різниці стовпців. Помітивши періодичність там, я вирішив побудувати матрицю по-гольфсьому, сподіваючись використатиdiffinv для відтворення оригіналу.

Завдяки періодичності ми можемо відтворити diffматрицю ed, змусивши R переробити з не кратною довжиною та витягнути стовпці, яких ми насправді хотіли:

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

Тоді ми інвертний цей процес, з diffinvвідтворити елементи коду, додайте рядок 10(рядки) на дно, реконвертіровать в ASCII з intToUtf8, і catрезультатом.


3
Ви можете якось подарувати собі щедроту. Баунті коштував би вам х реп, і ви отримаєте від нього х реп ... Отже, вважайте, це зроблено!
Стюі Гріффін


5

Стакса , 14 12 байт

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

Запустіть і налагоджуйте його

Розпакований, неозорений та прокоментований, це виглядає приблизно так.

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, але, мабуть, я про це забув K перехресну карту, коли спочатку писав цю відповідь.

Один майже цікавий факт, який слід зазначити щодо цієї відповіді, - це те, що Rце непотрібна інструкція, оскільки Kнеявно перетворює цілі числа в діапазони. Однак немає можливості просунути 3і 26без зайвого байта між ними.


4

PowerShell , 53 байти

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

Спробуйте в Інтернеті!

Я бачу, це схоже на відповідь Дома на Perl, але я дійшов до цього самостійно.

Це використовує той факт, що шаблон іде Symbol - Lowercase - Capitalнавіть під час обгортання нових рядків ( 8 - z - Aнаприклад), і таким чином просто додає відповідне зміщення (вибране через $j++%3) до поточного числа $_перед -joinтим, як об'єднати їх в один рядок. Це робиться три рази, щоб придумати три рядки (збереження $jміж ітераціями). Ці три лінії залишаються на конвеєрі, і неявна Write-Outputдає нам нові лінії безкоштовно.


4

Джулія 0,6 , 79 байт

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переносить вектор символів до рядка (оскільки для множення використовується множення). Є два вкладені векторні розуміння, в результаті чого вектор містить 3 рядки, після чого println.друкується кожен рядок у векторі, а потім новий рядок.

У TIO бракує відповідного методу для множення (з prod ) двох символів, щоб отримати рядок. Я знаю, що метод був доданий дещо недавно, але версія TIO виявляється такою ж, як і версія на моєму ПК, де працює цей код, тому я не можу повністю пояснити, чому він не працює в TIO.

Скопіюйте приклад вставки ( ;це не обов'язково, воно просто придушує додатковий вихід у відповідь):

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

&.|:transpose, то зробіть наступне дієслово ( |.) і знову перекладіть

-|."_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 Дякую! Мабуть, я не перевірив можливість створення матричного стовпця.
Гален Іванов

2
|:u:(<26)2&(|.>:)32 65 97економить 2 байти.
миль

@miles Дякую за чудовий код!
Гален Іванов

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 @ відповідь JavaScript Ніла .

Спробуйте в Інтернеті.


Оскільки функції мають бути багаторазовими і ця функція не виходить чисто, вона залишає глобальні змінні позаду. Вам потрібна i=t=0.
Джонатан Фрех

@JonathanFrech Виправлено
Kevin Cruijssen

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

мозковий ебать , 121 115 байт

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

Дякуємо @JoKing за збереження 6 байт!

Спробуйте в Інтернеті!


115 байт , поспілкуючись з генерацією чисел
Джо Кінг,

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

Ооо, у мене було інше рішення, якого може бути або не вистачати для того, щоб отримати окрему відповідь:;Bå_cÄ é}"@`" ·y
ETHproductions

Well now that we're the same length I feel better about it ;-)
ETHproductions

@ETHproductions: looks different enough to me :) Was going to see if I could come up with a shorter solution by mapping over C after lunch. Don't know how y and · ended up the wrong way 'round; I must have Ctrl+Zed too many times before Ctrl+Aing!
Shaggy



2

K4, 38 bytes

Solution:

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

Example:

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

Explanation:

9 characters to perform the rotation...

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

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

or

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

+1! I can't help you save any bytes back, but I wondered about using $^x8, but can't think of another var with enough length, perhaps "@INC" but it's too long, and using "@-" instead of $n++, but still, same length. Unless that helps you shrink this further? Unless you add -p flag and have implicit output?
Dom Hastings

1
@DomHastings Ah, found a way to loop without needing so much preparation
Ton Hospel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.