Распечатать Tabula Recta!
Tabula Recta (иногда называемая «таблицей Вигенера») была создана Иоганнесом Тритемиусом и использовалась в нескольких шифрах, включая все варианты шифра Вигенере Белласо и шифра Тритемия. Это выглядит так:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZA
CDEFGHIJKLMNOPQRSTUVWXYZAB
DEFGHIJKLMNOPQRSTUVWXYZABC
EFGHIJKLMNOPQRSTUVWXYZABCD
FGHIJKLMNOPQRSTUVWXYZABCDE
GHIJKLMNOPQRSTUVWXYZABCDEF
HIJKLMNOPQRSTUVWXYZABCDEFG
IJKLMNOPQRSTUVWXYZABCDEFGH
JKLMNOPQRSTUVWXYZABCDEFGHI
KLMNOPQRSTUVWXYZABCDEFGHIJ
LMNOPQRSTUVWXYZABCDEFGHIJK
MNOPQRSTUVWXYZABCDEFGHIJKL
NOPQRSTUVWXYZABCDEFGHIJKLM
OPQRSTUVWXYZABCDEFGHIJKLMN
PQRSTUVWXYZABCDEFGHIJKLMNO
QRSTUVWXYZABCDEFGHIJKLMNOP
RSTUVWXYZABCDEFGHIJKLMNOPQ
STUVWXYZABCDEFGHIJKLMNOPQR
TUVWXYZABCDEFGHIJKLMNOPQRS
UVWXYZABCDEFGHIJKLMNOPQRST
VWXYZABCDEFGHIJKLMNOPQRSTU
WXYZABCDEFGHIJKLMNOPQRSTUV
XYZABCDEFGHIJKLMNOPQRSTUVW
YZABCDEFGHIJKLMNOPQRSTUVWX
ZABCDEFGHIJKLMNOPQRSTUVWXY
Мне часто это нужно, но я не могу найти его где-нибудь в Интернете, чтобы скопировать и вставить. Поскольку квадратный стол так долго, и принимает чертов возраст ввести ваш код должен быть как можно короче.
Правила / Требования
- Каждое представление должно быть либо полной программой, либо функцией. Если это функция, ее нужно запустить, для этого нужно всего лишь добавить вызов функции в конец программы. Все остальное (например, заголовки в C), должно быть включено.
- Если это возможно, предоставьте ссылку на сайт, где ваша программа может быть протестирована.
- Ваша программа не должна ничего писать
STDERR
.
- Стандартные лазейки запрещены.
- Ваша программа может выводить в любом случае, но она должна быть напечатана (не массив или аналогичный).
счет
Программы оцениваются в соответствии с байтами, в UTF-8 по умолчанию или другой набор символов по вашему выбору.
В конце концов ответ с наименьшим количеством байтов победит.
Материалы
Чтобы убедиться, что ваш ответ обнаружен, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
# Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться во фрагменте списка лидеров:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Leaderboard
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.
/* Configuration */
var QUESTION_ID = 86986; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 53406; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang > b.lang) return 1;
if (a.lang < b.lang) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<div id="language-list">
<h2>Winners by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
printf
, мы должны включитьstdio.h
, еслиisalpha
используется,ctype.h
нужен и т. Д. Это правильно?Ответы:
05AB1E ,
65 байтСпасибо Downgoat за сохранение 1 байта. Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
v
использует значение, перебирая его. В этом случае он потребляет алфавит, поэтому он повторяется 26 раз. Это также точное количество раз, которое нам нужно для итерации=À
функции. Эти=
листы стек интактные иÀ
только поворачивают верхнюю часть стека элемента-влево. Отвечает ли это на ваш вопрос? :)Vim,
2523 байтаГде
↵
ключ возврата.РЕДАКТИРОВАТЬ : строчные в порядке, поэтому я могу сохранить две клавиши.
источник
:h<_<cr>jjY
генийV~
Python 2,
595753 байтаСпасибо @xsot за -4 байта!
источник
print bytearray(a)
./// , 220 байт
Попробуйте онлайн!
Это было на удивление нетривиально, и я понятия не имею, является ли это оптимальным.
Единственный способ решить такую проблему в /// - извлечь общие подстроки.( Оказывается, я ошибался. ) Однако из-за характера вывода не совсем понятно, какие подстроки лучше всего извлекать, поскольку вы не можете фактически извлечь весь алфавит из-за разрывов строк. Таким образом, вам нужно извлечь некоторые подстроки из обернутого алфавита, но тогда есть компромиссы в отношении того, как долго вы создаете подстроки и какие вы выбираете.Итак, вот что я сделал. Это скрипт CJam, который находит все подстроки длиной до 25 в данной строке и для каждой из них вычисляет, сколько байтов будет сохранено при извлечении. В основном, если есть
N
копииM
подстроки длины , вы должны сохранить(N-1)*(M-1) - 5
подстроки, эти подстроки не содержат косые черты. Кроме того, технически, когда вы уже извлекли 8 подстрок или около того, постоянное смещение в конце уменьшается до-4
, но скрипт не учитывает это.Во всяком случае, вот что я сделал со сценарием:
/x/ABC/
к коду, гдеx
находится выбранная буква иABC
подстрока.В конце концов, мы спасем еще несколько байт, заменяя полученный
//
с|
и предваряя/|/\/\//
(поэтому извлечение подстроки стоит только 4 вместо 5 байт после 8 подстроки или около того ).Как я уже сказал, я понятия не имею, является ли это оптимальным, и я нахожу довольно нерегулярный результат довольно интересным. Можно было бы найти более короткое решение, выбрав неоптимальные (но более) подстроки где-нибудь внизу строки. Интересно, каков класс сложности этой проблемы ...
источник
YX
в выводе. ;)C, 47 байтов
Попробуйте это на Ideone
Один цикл печати алфавита каждые 26 символов, но каждый 27-й символ заменяется новой строкой.
источник
f(i)
затем просто вызовf()
без каких-либо аргументов.i=702;f(){for(;i--;)//...
J 15 байт
Онлайн переводчик .
источник
|. (Shift)
на 8 байтов больше!(i.26)(|."0 _)u:65+i.26
u:65+1&|.^:]i.26
поскольку наречие власти отслеживают предыдущие результаты, если дан список.|.
17 байтов:u:65+|."0 1/~i.26
(все еще использую/~
)u:65+(|./~,.)i.26
. Я избавился от ранга, используя крюк и,.
колонку, но она оказалась такой же длины./// , 128 байт
Попробуйте онлайн!
Вдохновленный удивительным ответом Якуба на вызов L-phabet, я решил попробовать свои силы и в реальном программировании на ///, а не просто использовать его для сжатия. Это было довольно сложно, и мне понадобилось четыре попытки, но в итоге получилось намного короче, чем мое решение на основе сжатия .
объяснение
Быстрый учебник по ///: в основном интерпретатор просто читает символ за символом и делает следующее:
\
ни другое/
, распечатайте его.\
, напечатайте следующий символ./
, проанализируйте/x/y/
инструкцию (с теми же правилами экранирования) и несколько раз замените всеx
в оставшемся коде наy
.Взяв немного больше вдохновения от Якуба, для простоты я просто объясню версию 4x4:
Начнем с того, что заменим их
:
на вещи между вторым и третьим/
. В результате код будет вращать последующие строки. Мы получаем это:Символы
f
,b
иx
являются просто сокращенными для обычных строк, которые мы сейчас расширим. Дляf
слэшей,b
для слэшей иx
для\//
которых случается довольно много. Причина, по которой я использую псевдонимы для односимвольных подстрок/
и\
заключается в том, что они должны быть экранированы в первой инструкции подстановки, поэтому я на самом деле экономлю довольно много байтов, не требуя всех этих обратных косых черт. Вот то, что мы получаем послеx
,f
иb
были заполнены:Очень читабельно
Итак, первая строка просто дословно напечатана. Затем мы попадаем в интересную часть, которая вращает все дальнейшие ряды. На самом деле он состоит из четырех разных инструкций. Стоит заметить, что я избежал всех случаев, описанных
A
в этих инструкциях. Причина этого в том, что это позволяет мне отличатьA
s в инструкциях отA
s в оставшихся строках, которые должны обрабатываться по-разному.Это соответствует
/A
и заменяет его/
, удаляяA
. Обратите внимание, что эта подстрока появляется толькоABCD
в начале каждого , поэтому при этом удаляется первый символ всех последующих строк:Это соответствует переводу строки после косой черты и заменяет его на
A_/
. Таким образом, это вставляетA
в конце каждой строки, завершая вращение, а также превращает перевод строки в подчеркивание.Это соответствует
_/
и заменяет его переводом строки с последующей косой чертой. Причина, по которой мне нужно сделать этот обход через подчеркивание, заключается в том, что /// применяет каждую инструкцию несколько раз, пока строка больше не совпадает. Это означает , что вы никогда не можете использовать инструкцию вида ,/x/axb/
гдеx
,a
иb
произвольные строки, потому что после заменыx
всегда будет по- прежнему совпадают. В частности, это означает, что мы не можем просто вставить что-то перед переводом строки. Нам нужно заменить перевод строки в процессе и отменить эту замену.Это соответствует
\A
и заменяет его\B
так, чтобы инструкции после оставшихся строк обрабатывали следующий символ. После обработки всех четырех инструкций оставшаяся строка выглядит следующим образом:Теперь печатается первая повернутая строка, а затем следующий набор инструкций поворачивает оставшиеся строки на другую ячейку и так далее. После последнего поворота у нас есть еще несколько инструкций, которые мы можем игнорировать, а затем мы заканчиваем неполной инструкцией:
Неполные инструкции в конце просто игнорируются, и программа завершается.
источник
A->B
,B->C
... Но это не совсем сработало. Удаление первого символа и добавление его в конце, безусловно, намного лучший подход.Желе , 7 байт
Попробуйте онлайн!
Как это устроено
источник
Emacs, 47 байт
Где
^P
означает «Control P» и т. Д. Это 47 байтов, поскольку для клавиш F3 и F4 требуется два байта ASCII.После ввода начального ввода он определяет макрос клавиатуры для дублирования строки и перемещения первого символа в конец. Затем он запускает макрос еще 24 раза.
источник
JavaScript (ES6), 56 байт
Да, верно, половина моего кода - буквенный строковый литерал. Лучшее, что я мог сделать без литерала - это 81 байт:
Если вам нужна программа, а не функция, удалите
_=>
и обернитеconsole.log()
ее стоимостью 10 байт.источник
/./g
соответствует каждой букве предоставленной строки алфавита. В строке замены$&
представляет само совпадение,$'
часть строки после совпадения и$`
часть строки перед совпадением.$`$&$'
поэтому будет представлять исходную строку, но, конечно, тривиально переместить деталь после совпадения в начало, тем самым обеспечивая эффект вращения.Mathematica
6861 байтБлагодаря...
@MartinEnder (7 байт)
источник
Array
может быть короче, чем отображение надRange
.Array
действительно сохраняет байт, но затем вы можете сохранить другой, избегаяColumn
:Array[{"A"~CharacterRange~"Z"~RotateLeft~#,"\n"}&,26,0]<>""
(вам просто нужно заменить\n
реальный перевод строки).Print@@@NestList[RotateLeft,"A"~CharacterRange~"Z",25]
Grid@Array[FromCharacterCode[Mod[+##-2,26]+65]&,{26,26}]
Python 2,
75656158 байтПолучает алфавит с помощью
map(chr,range(65,91))
, затем вручную применяет операцию сдвига строки.Спасибо @LeakyNun и @TheBikingViking за -4 байта!
Спасибо @xnor за -3 байта!
источник
a="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
короче.a[1:]
вместоa[1:26]
.for x in s:print s;s=s[1:]+x
.s='%c'*26%tuple(range(65,91))
.C,
8864 байтаВызов
f()
без аргументов.Попробуйте это на Ideone .
источник
Piet , 247 байт / 190 кодов
Попробуйте онлайн!
Таким образом, это заняло гораздо больше времени, чем я ожидал, и у меня есть несколько идей относительно некоторых других более эффективных (более стековых) подходов, но я наконец-то заработал чертовски полезную вещь ( исправил ошибку интерпретатора и добавил функции IDE вдоль кстати), так вот оно и есть. Вряд ли самый эффективный язык, но чертовски весело. Вот увеличенный вид и след, показывающий пройденный путь. История на моем GitHub .
Как язык, основанный на стеке, он слишком запутан, чтобы кратко объяснять, но вот основной обзор того, что делают различные секции / циклы. Все имена переменных и функций приведены только для пояснения, поскольку в Piet нет переменных или функций.
line_counter
с 27, загружается как @cur_letter
, устанавливаетletter_count
на 27letter_counter
reset_line
если ноль (светло-голубой 2-блок)cur_letter
на вершину стекаcheck_done
еслиcur_letter > 'X'
(чирок / красный блок, правая сторона)cur_letter
и выводит его (нижний правый угол)reset_letter
еслиcur_letter > 'Y'
(светло-зеленый блок, слева)reset_line
ветка (большой розовый квадрат):letter_count
до 27check_done
ветвь (правая половина внутри)line_counter
to topline_counter
и откат к основанию стекаreset_line
ветвь (левая сторона, зеленый блок):cur_letter
на «@»источник
MATL , 8 байт
Благодаря @Dennis , который предложил, чтобы MATL включал модульное индексирование, и @Suever , у которого была идея автоматических парных операций.
Попробуйте онлайн!
источник
Javascript,
113969176 байтСупер-короткая версия для запуска в консоли:
Javascript / HTML,
140123118105 байтБолее симпатичная версия с выводом HTML, которая упрощает копирование и вставку OP:
(РЕДАКТИРОВАТЬ: я должен был просто использовать строку AZ вместо генерации)
(РЕДАКТИРОВАТЬ 2: Спасибо @Neil и @DanTheMan за их вклад (см. Комментарии))
источник
l.slice(0,1)
простоl[0]
, в то время,27
как ненужно, в этот момент вы можете переместить срез и в конечном итогеl.slice(1)+l[0]
. Кроме того, я думаю, что вы можете переместитьconsole.log
в тело цикла, таким образом избегая трейлинга;
.console.log
.PowerShell, 44 байта
источник
R,
474241 байтПопробуйте онлайн!
Генерирует 27 альфа-диабета, удаляет 27-е буквы и печатает в 26 столбцах.
Улучшение вдохновленный @Giuseppe «s решение .
источник
rep
но это особенно вдохновило! Очень хорошо. Я бы снова проголосовал, если бы мог.1
вместо""
дляstdout
.Sesos ,
2725 байтПопробуйте онлайн! Проверьте Debug, чтобы увидеть сгенерированный код SBIN. †
Сесос сборка
Двоичный файл выше был сгенерирован путем сборки следующего кода SASM.
Как это устроено
Мы начнем с инициализации ленты
ABCDEFGHIJKLMNOPQRSTUVWXYZ
. Это следующим образом.Запишите 26 в ячейку, оставив ленту в следующем состоянии.
Пока ячейка под заголовком данных не равна нулю, мы делаем следующее.
Скопируйте число в две ячейки слева и добавьте 64 в крайнюю левую копию.
Переместите крайнюю левую копию в исходное положение, затем вычтите 1 из крайней правой копии.
Процесс останавливается после 26 итераций, так как самая правая копия 0 . Мы перемещаем ячейку вправо, поэтому конечное состояние ленты после инициализации следующее.
Теперь мы готовы сгенерировать вывод, повторяя следующий процесс, пока ячейка под заголовком данных не станет равной нулю.
Сначала мы печатаем символ под заголовком данных и перемещаемся вправо, повторяя этот шаг, пока не будет найдена ячейка со значением 0 . После печати
ABCDEFGHIJKLMNOPQRSTUVWXYZ
лента выглядит следующим образом.Теперь мы перемещаем головку данных на 27 единиц влево (назад к ведущему 0 ) и повторяем комбинацию «печать-перемещение», пока не будет найдена ячейка со значением 0 . Это ничего не печатает и оставляет ленту следующим образом.
Теперь мы пишем 10 в текущую ячейку, печатаем соответствующий символ (перевод строки) и обнуляем ячейку при вызове
get
пустого ввода, оставляя ленту без изменений.После этого мы перемещаем содержимое ячейки вправо к текущей ячейке, затем перемещаем заголовок данных в единицах вправо.
Следующая итерация немного отличается. Первый шаг печати печатает
BCDEFGHIJKLMNOPQRSTUVWXYZ
, оставляя ленту следующим образом.Теперь мы перемещаем головку данных на 27 единиц влево.
Последующая петля печати печатает
A
и оставляет ленту следующим образом.Еще раз, мы печатаем перевод строки, перемещаем содержимое ячейки вправо к текущей ячейке, затем перемещаем заголовок данных на единицы вправо.
После еще 24 итераций последний шаг перемещения головки данных вправо оставляет ленту в следующем состоянии.
Ячейка под заголовком данных теперь равна 0, и программа завершается.
† TIO использует более новую версию Sesos, которая обратно совместима с SASM, но генерирует более короткий код SBIN.
источник
Haskell,
565352 байтатой же длины: (используя предложение @AndersKaseorg)
чтобы делать модульные вещи, вы должны импортировать Data.Char, чтобы получить функцию chr,
745958 байт было лучшим, что я мог получить с этим: (спасибо @nimi за предложение функции toEnum)Вероятно, это может быть намного короче, но я не знаю никаких уловок игры в гольф на Haskell.
использовал mapM вместо mapM_ (см. комментарий @ Lynn)
источник
['A'..x]
на['A'..'Z']
, который теперь используется дважды, и поднимите его до определения.chr
отData.Char
, вы можете использоватьtoEnum
вместо и опуститьimport
.mapM_
кmapM
должно быть в порядке. Может быть, это стоит мета пост ...R, 53 байта
Вот он на онлайн переводчике .
источник
Retina,
3631 байт5 байтов благодаря Мартину Эндеру.
Лидирующий перевод строки значителен.
Попробуйте онлайн!
Кредиты .
источник
Brain-Flak , 222 байта
Попробуйте онлайн!
Я новичок в Brain-Flak, так что, возможно, это может быть много в гольфе, но, по крайней мере, это первая попытка. Он хранит 27 полных алфавитов в левом стеке, затем перемещает алфавиты вправо и заменяет каждую 27-ю букву новой строкой.
Мой исходный код немного сбивает с толку, но я все же добавлю его.
источник
V ,
36, 10 байтовПопробуйте онлайн!
При этом используется кодировка «Latin1».
Объяснение:
источник
C #, 98 байт
Я пытался понять, смогу ли я сгенерировать буквы короче, чем просто инициализировать их как строку, но на самом деле это невозможно. Буквы 26 байтов, и только этот фрагмент
составляет 25 байт. Я думаю, что инициализация их, а затем добавление их с + = a является хорошим решением, но с C # вы ограничены количеством функций, таких как
Substring()
иConsole.WriteLine()
.Моя попытка 98 байтов:
источник
Октава, 27 байт
Мы добавляем строку и вектор столбца, и Octave приятно расширяет размеры сиглета, в этом нет необходимости
bsxfun
(как вам потребуется в Matlab).источник
q, 20 байтов
источник
-1_'26 27#.Q.A
Java,
190176172163 байтаисточник
System.out.printf("%c", ...)
->System.out.write(...)
,'\n'
->10
,'A'
->65
. Обратите внимание, что предложение символа новой строки / перевода строки разрешено, но требуется идеальное выходное значение . :)String[]a
можно удалить; иint s=0;while(s<26){p(s,26);p(0,s++);p(-1,0);}
может бытьfor(int s=0;s<26;p(0,s++),p(0,s++))p(s,26);
.Баш, 66 байт
Я создаю полный алфавит в
A
, затем печатаю 26 повернутых версий, беря символы, начинающиеся сn
и добавляя предшествующую позициюn
.источник
Perl, 42 байта
Полная заслуга @Dom Hastings за это.
Или (тот же счетчик байтов):
Нужно
-M5.010
или-E
запустить, например:Мой старый ответ (55 байт):
Нужно
-M5.010
бежать. Так что бегите с:Возможно, возможно сделать короче, но я не выяснил, как ... пока
источник
@l=A..Z;say@l[$_..25],@l[0..$_-1]for 0..25
и$_=join"",A..Z;eval'say;/./;$_=$\'.$&;'x26
оба требуют-E
/-M5.010
.