Антиферромагнетизм - это то, что исследователи IBM использовали для перехода от 1 терабайтного диска к 100 терабайтному диску с тем же количеством атомов.
В материалах, которые проявляют антиферромагнетизм, магнитные моменты атомов или молекул, обычно связанные со спинами электронов, равномерно выравниваются с соседними спинами (на разных подрешетках), указывающими в противоположных направлениях.
Ваша задача - написать программу, которая рисует порядок расположения антиферромагнитных атомов, как показано на рисунке выше. Вы должны иметь как минимум четыре пары пар, хотя их может быть больше.
Каждая пара должна быть показана следующим образом, хотя они должны быть действительными стрелками :
вверх вниз вниз до вверх вниз
Ваш вывод может быть в ascii art или в графическом виде.
Вы можете создать только функцию или целую программу, но для этого нужно ввести и нарисовать столько пар. Примеры только с словами :
Вход: 1
вверх вниз вниз до вверх вниз
Вход: 2
вверх вниз вверх вниз вниз вверх вниз вверх вверх вниз вверх вниз
Допустимые стрелки:
↑
и↓
⇅
и⇵
/|\
и\|/
Пожалуйста, поместите ваши ответы в язык, формат X байтов , так как это легко читать. Наименьшее количество байтов выигрывает!
^v
?⇅
а⇵
? ( Юникод кодовые точки U + 21C5 и U + 21F5 )Ответы:
APL,
1812 байтЭто создает матрицу 2n x 3, где n - это input (
⎕
), заполненная символами↑
и↓
. Транспонирование (⍉
) этой матрицы затем печатается.Вы можете попробовать это онлайн .
источник
\x18\x19
как↑↓
.Pyth, 15 байтов (11 символов)
Попробуйте онлайн: демонстрация
Объяснение:
источник
Ява,
313296 байтВот пример, который отображает стрелки графически:
В более читаемом формате:
Дисплей для 5 в качестве входа:
Вам придется изменить размер окна, которое появляется, чтобы увидеть стрелки. Я попытался сделать так, чтобы ни один из них не казался «отрубленным» внутренней границей окна, но на некоторых платформах это может выглядеть так.
источник
CJam, 18 байтов (14 символов)
Создайте столбцы (которые образуют повторяющийся шаблон), затем транспонируйте.
Попробуйте онлайн .
Альтернатива 18 байт:
Поверните строку
"↑↓"*n
0, 1 или 2 раза.источник
CJam (15 символов, 19 байтов)
Онлайн демо
источник
Befunge, 71 байт
Мой первый ответ, поэтому, пожалуйста, будьте нежны со мной: о)
Раздражающие проблемы с выравниванием привели к потере нескольких байтов, если у вас есть какие-то улучшения для меня, я бы хотел их услышать!
Вход: 4
источник
CJam, 14 байтов
Для этого требуется поддерживающий терминал, который отображает кодовую страницу 850 следующим образом:
Не заостренная часть кода оказалась идентичной альтернативной версии @ Sp3000 .
CJam, 17 байт
Читерская версия с двумя стрелками, с кредитами на @DigitalTrauma.
Попробуйте онлайн.
источник
Pyth, 16 байтов (12 символов)
Пример:
источник
Python 2,
131122 байтаНу ... я бью
CJava, я думаю?Я выбрал высоту
32
для стрелок, которая довольно большая, поэтому через некоторое время черепаха начинает рисовать за кадром. Если вы хотите, чтобы все подходило для больших входов, вы можете либо уменьшить стрелки, заменив32
s, либо использоватьscreensize()
(я не уверен, есть ли мета-пост на выводе за пределы экрана ...)источник
GNU sed, 25 байт
Я нашел символы стрелок
⇅
и⇵
unicode, которые допускают большее сокращение, и они были разрешены этим комментарием :Ввод одинарный , например, 4
1111
:Предыдущий ответ в случае
⇅
и⇵
не разрешено:GNU sed, 39 байт
источник
sed
). Это особенно удобно для этого вопроса, потому что выход требуемой длины может быть легко сгенерирован из унарного ввода. Cheaty? возможно - но консенсус в мета-ответе вроде бы с этим согласен.Swift 2, 66 байт
Если бы Swift был бы чуть менее многословным, он даже не был бы таким плохим для игры в гольф (я смотрю на тебя, названный параметр
appendNewline
)источник
Ruby 39 (или 44) символов, 43 (или 48) байта
Согласно https://mothereff.in/byte-counter символы со стрелками по 3 байта каждый!
Анонимная функция, которая возвращает массив. Если функция должна напечатать массив, она должна заканчиваться еще
puts a
на 5 байтов.Пример использования
дает
источник
J,
413532 байта (28 символов)Я никогда ничего не программировал на J, так что это заняло у меня некоторое время, и это определенно не лучший способ сделать это.
Это ждет, когда вы введете число при запуске, прежде чем выводить стрелки.
источник
Javascript (ES6),
66635347 байтов (62554941 символов)Перейдем к Digital Trauma, чтобы найти символы ⇅ и ⇵ и позволить мне сбрить больше байтов.
источник
J, 30 байт
источник
C
169170162125123105119107 байтТак что, хотя я мог бы попробовать, даже если это явно не победитель :)
Golfed:
Ungolfed:
Пример:
Обновить:
Смотрите, бегите сюда
источник
for(j=0;j++<3;)
то же самое сi
i
иj
являются глобальными, поэтому они инициализируются на ноль. Вы можете броситьi=0
иj=0
.n
в качестве буфера:n=getchar();n=atoi(&n);
Октава, 37 байт
РЕДАКТИРОВАТЬ: исправлено из более ранней полосой антиферромагнитной версии. Спасибо @ beta-decay за то, что поймали мою ошибку.
Определяет функцию
f(n)
. Образец вывода:источник
CoffeeScript, 60 байтов (58 символов)
Понимание облегчает без рекурсии:
источник
Рубин, 33 байта
Как функция:
Пример:
Рубин, 37 байт
Полная программа, которая принимает входные данные от стандартного ввода:
источник
> <>, 55 байт
Попробуйте онлайн здесь , введя желаемую длину в качестве начального значения стека.
Non ⇅⇵ решение, 59 байт:
источник
BBC BASIC, 70 байт
Это, вероятно, может быть в гольф больше
источник
C 97 байтов
Принимает ввод из первого параметра командной строки, например
main 4
. Поддерживает до357913940
пар. В C вы не можете использовать многобайтовые символы какchar
s, но они отлично работают как строки.Это меньше как функция, но другие ответы C были полными программами, поэтому я тоже это сделал. Было бы 69 байтов:
источник
Python 2, 47 байт
Порт моего BBC BASIC ответа , используя преимущества того, как Python может легко переворачивать строки.
источник
C
1178985 байтUngolfed:
источник
JavaScript (ES6), 66 байт (62 символа)
Это включает в себя символ Unicode, который считается по три байта каждый, а также обязательный символ новой строки, который считается одним байтом.
Использует рекурсию, вдохновленную этим ответом . Я попробовал это не рекурсивно, но генерация определенного массива заняла слишком много символов, хотя кто-то другой мог бы знать, как сделать это лучше меня.
демонстрация
Как и во всех ответах ES6, они демонстрируются в Firefox, Edge и Safari 9 только во время написания:
источник
Java, 150 байт
Выход
g(2)
:источник
Python 2,
4555 байтредактировать: измененные стрелки
Довольно простой подход. Однако не работает со стрелками Юникода.
источник
^v
стрелки , поскольку они не имеют хвостаR,
6062 байтаПринимает ввод из STDIN и выводит в STDOUT. Создает массив 3 x (2 * input) , добавляет столбец возвратов каретки и затем выводит транспонированный массив.
Тестовый забег
источник
Tcl 49 байт
Нет победителя, но, по крайней мере, он конкурентоспособен:
источник
lmap
вместоforeach
string repeat
может быть сокращено доstring re
proc
получение побочного эффектаlmap
возврата значений и замены$argv
кем-то одной буквенной переменной может сохранить байты.Swift 2.0, 79 байт
Ничего умного ...
источник