Если задано целое число k и либо блок текста, либо двумерный массив, в котором внутренние массивы могут иметь неодинаковую длину (что напоминает блок текста), поверните каждый символ или элемент в k-м столбце вверх или вниз до следующей позиции это существует.
пример
Поверните 20-й столбец следующего текста (на основе 1):
A line with more than k characters.
A longer line with more than k character.
A short line.
Rotate here: ------v--
This is long enough.
This is not enough.
Wrapping around to the first line.
Выход:
A line with more thtn k characters.
A longer line with aore than k character.
A short line.
Rotate here: ------m--
This is long enoughv
This is not enough.
Wrapping around to .he first line.
Вращение k-го столбца того же ввода, где 35 < k <42, приведет к неизменности введенного текста.
правила
- Вы можете использовать необработанный текст, массив строк, двумерный массив символов или любой разумный формат для представления данных. Вы также можете использовать типы данных, отличные от символов.
- Число возможных значений типа данных элементов должно быть не менее 20, если от этого зависит длина вашего кода, в противном случае - не менее 2. Это может быть подмножество символов или других значений, поддерживаемых в собственном типе.
- Пробелы и любые нулевые значения являются обычными значениями, если вы разрешите их вводить. Вы также можете просто исключить их в типе элемента.
- Изменение правила: вам разрешается заполнять более короткие массивы общим значением по умолчанию (например, пробелами), если вы предпочитаете использовать массивы одинаковой длины для хранения данных.
- k может быть 0 или 1. Гарантируется, что он находится внутри самой длинной строки на входе (подразумевается, что на входе есть хотя бы одна непустая строка).
- Вы можете выбрать, будет ли он вращаться вверх или вниз.
- Либо просто поверните одну позицию, либо поверните n позиций, где n - положительное целое число, указанное во входных данных.
- Самый короткий код выигрывает.
источник
n~¨⍨↓⍉⎕⌽@(≢¨)@⎕⍉↑⎕,¨⍨n←⊂⊂⍬
. Может быть, вы могли бы добавить modded↑
↓
в свое расширение, чтобы помочь дальнейшему игре в гольф (но я не совсем уверен, насколько они полезны).C
иI
локализованы , поэтому они не загрязняют:{~∘I¨⍨↓⍉⎕⌽@(~⊢∊I←⎕INSTANCES⊢∘C)@⎕⍉↑⎕,¨⍨⎕NEW⎕FIX I←C←':Class C' ':EndClass'}
Python 2 ,
11111010999989694 байтаПопробуйте онлайн!
Принимает ввод в виде списка строк и столбца с 0 индексами и возвращает список строк.
Колонна вращается вверх 1.
-11 байт, спасибо Джо Кингу
источник
Java 8,
107106135107 байт+29 байт для исправления ошибки ..
0 индексированные; вращается вниз, как в примере.
Ввод как символьная матрица; изменяет char-матрицу вместо возврата новой для сохранения байтов.
Попробуйте онлайн.
Объяснение:
источник
char p=m[0][k]
- если это не так, не вызовет ли это исключение? Хорошая работа, кстати. Вы бьете мою попытку C # с большим отрывом :)n
k
n
int p=0,t;
p
m[i%s][k]=(char)(p<1?t:p)
Zsh ,
94 87 78 7469 байт-7 байтов путем замены на арифметическую троицу, -9 байтов путем изменения символа на месте (TIL), -4 байта путем ввода индекса в stdin и строк в качестве аргументов, -5 байтов с использованием строки вместо массива хранить вращающиеся символы.
Старый Старый Старый СтарыйПопробуйте онлайн!Вот ключи, чтобы заставить этот ответ работать:
$array[0]
или$string[0]
всегда пусто$array[n]
или$string[n]
пусто, если n больше длины массива / строкиarray[i]=c
илиstring[i]=c
заменит элемент / символ.$[$#s<i?0:++j]
,j
это не увеличивается , если$#s<i
.В исходном 94-байтном ответе я столкнулся с интересной проблемой, связанной с использованием
<<<
для печати. Я должен был использовать,echo
чтобы обойти это:Причину этого можно увидеть здесь:
Здесь строки запускаются в подоболочках, потому что они передаются как stdin другой программе. Если программа не указана, она неявно передается
cat
. Вы можете увидеть это с<<< $_
.<<< $ZSH_SUBSHELL
похоже наecho $ZSH_SUBSHELL | cat
. Так как нам нужно увеличиватьj
, мы не можем быть в недолговечности.источник
R , 62 байта
Попробуйте онлайн!
Принимает ввод как заполненную пробелами матрицу символов. Вращается вверх Все благодаря Кириллу Л. !
R , 74 байта
Попробуйте онлайн!
Это представление предшествует разрешению дополненных линий.
Псевдоним
substr
здесь не сработает, потому что мы звонимsubstr
иsubstr<-
на первой линии.Ввод / вывод как список не дополненных строк; вращается вверх.
источник
L
в родительской среде. Я с удовольствием обновлюсь до отступов!C # (интерактивный компилятор Visual C #) , 82 байта
Попробуйте онлайн!
Благодарим @ASCIIOnly за предложение,
foreach
которое привело к экономии 12 байт!-8 байт благодаря @someone!
-1 байт благодаря @EmbodimentofIgnorance!
источник
foreach
потому что это противоположный порядок :(dynamic
для объединения объявлений и сохранения 2 байтов (я никогда раньше этого не видел!) Попробуйте онлайн!Рубин , 57 байт
Попробуйте онлайн!
Принимает ввод как массив строк
a
. Поворачивает текст вниз в позиции от 0k
. Возвращает путем изменения вводаa
.источник
05AB1E , 21 байт
Можно определенно играть в гольф еще немного ..
0 индексированные; ввод и вывод как список строк.
Он вращается вниз, как в примере, но
<
его можно заменить на>
на вращение вверх.Попробуйте онлайн (нижний колонтитул присоединяется к списку с помощью новых строк, удалите его, чтобы увидеть фактический вывод списка).
Объяснение:
источник
K4 , 41 байт
Решение:
Объяснение:
Не уверен , что если я что - то ... 0 индекс отсутствует, поворачивает вверх (изменить
1
к-1
разворотом вниз)источник
Japt v2.0a0, 18 байт
На основе 0 с вводом и выводом в виде многострочной строки. Вращается на 1.
Должен быть более короткий метод!
Попытайся
источник
6
, ваш ответ будет пропускать пробелline with
в первой строке иRotate here
в четвертой строке, тогда как большинство других ответов будет также вращать этот пробел.Желе , 16 байт
Двоичная ссылка, принимающая список строк (списки символов, не содержащих символов новой строки) слева и целое число справа, которое возвращает список строк.
Попробуйте онлайн! (нижний колонтитул разделяется на новые строки, вызывает ссылку и снова присоединяется к новым строкам)
Как?
источник
Perl 5 (
-p
), 75 байтk имеет индекс 0, повернуть вниз
TIO
источник
Perl 6 ,
3833 байтаИзменяет массив на месте (правила не запрещают)
Попробуйте онлайн!
источник
JavaScript (Node.js) , 52 байта
Попробуйте онлайн!
-7 байт благодаря Шегги!
Еще не видел ответ JavaScript! Порт моего ответа C #.
источник
Древесный уголь ,
342821 байтПопробуйте онлайн! Ссылка на подробную версию кода. Принимает массив строк в качестве входных данных. 0 индексированные. Изменить: Теперь, когда
PeekDirection
это было исправлено, я могу управлять им напрямую. Объяснение:Распечатайте входные строки.
Прыгайте на вершину колонны, которую нужно повернуть.
Извлеките ячейки, которые были напечатаны в.
Замените каждую напечатанную ячейку значением предыдущей ячейки (циклически). Удобно значения ячеек считываются во время
PeekDirection
вызова, поэтому тот факт, чтоMapCommand
вызов записывает новые значения в ячейки, не имеет значения.источник
зернышко
-rn
, 32 байта0 индексируется, вращается вниз. Попробуйте онлайн!
Фильтры для поиска индексов всех строк, достаточно длинных для участия в ротации. Затем зацикливается на этих строках, заменяя соответствующий символ в каждой строке временной переменной
s
. Повторное посещение первого ряда в конце снова меняет фиктивное значение.источник
Желе , 19 байт
Попробуйте онлайн!
1-индексироваться. Вращается вниз Монадическая ссылка, которая принимает правый список строк Jelly (список списков символов) в качестве первого аргумента и k в качестве второго. Пробелы запрещены во входных данных, кроме правого отступа, но разрешены все другие символы.
Как реализовано в TIO, нижний колонтитул разбивает одиночный ввод строки на список строк и добавляет его справа, но это для удобства; насколько я понимаю, результатом этого шага является разрешенный ввод для основной ссылки согласно правилам.
источник
GFortran , 199 байт
-20 или около того, читая из стандартного ввода, а не из файла
-14 , используя неявные целые числа для
i, k, n
-4 путем удаления пробелов и
::
Требуется ввод данных пользователем
k
иn
в первой строке, гдеk
находится столбец для поворота, иn
количество строк текста. Последующие входные данные - это строки текста, которые необходимо повернуть. Это было больно писать! Фортран такой педантичный!источник
T-SQL, 195 байт
Попробуй онлайн версию без игры в гольф
источник