Чтобы «переместиться» на несколько n
мест, сделайте следующее:
- Удалить последние
n
цифры - Добавить
n
копии первой цифры в начало номера
Например, чтобы сдвинуть число на 31415
три позиции , достаньте последние три цифры, чтобы получить 31
, а затем добавьте еще три копии первой цифры, 3
в конце, давая 33331
.
Если число отрицательное, цифры должны быть взяты слева, а первая цифра должна быть «заполнена» справа. Например, строка, 31415
сдвинутая на -3 места, дает 15555
.
Если число равно 0, никаких изменений не должно быть.
Если смещение превышает длину программы, заполненные цифры могут начать удаляться. Это означает, что если указанное число превышает длину строки, дальнейшие изменения не будут сделаны после того, как вся строка станет одной цифрой.
Соревнование
Учитывая два числа, n
и s
возвращение n
сдвинуто по s
местам.
Контрольные примеры
n, s -> result
7243, 1 -> 7724
452, -1 -> 522
12, 1 -> 11
153, 4 -> 111
Это код-гольф , поэтому выигрывает самое короткое действительное представление (измеряется в байтах).
Ответы:
APL (Dyalog) , 32 байта
Анонимная функция, которая принимает sift в качестве левого аргумента и число (в виде строки) в качестве правого аргумента.
Попробуйте онлайн!
{
анонимная функция, где ⍺ и ⍵ - левый и правый аргументы|⍺
абсолютная величина сдвигаa←
магазин в а⋄
тогда⌽⍵
поменять номер⊃
выбрать первую (т.е. последнюю) цифруa⍴
г eshape его длина а⍵,
предварять число(
…),
Добавьте следующее:⊃⍵
первая цифраa⍴
г eshape его длина а(
…)↓
Отбросьте следующее количество символов:a-⍺
минус смещение(
...)↑
взять следующее количество символов:≢⍵
длина оригинального номераисточник
Python 2 , 50 байт
Попробуйте онлайн!
источник
Haskell, 69 байт
Принимает число в виде строки. Попробуйте онлайн!
Как это работает:
источник
MATL , 12 байт
Входные данные: число, которое должно быть смещено в виде строки; количество сдвига как число.
Попробуйте онлайн! Или проверьте все тестовые случаи .
Консисдер входов
'452
и'-1'
.источник
J 37 байт
Это была одна из тех ситуаций в J, где явный глагол казался правильным (единственным?) Выбором, но я хотел бы знать, есть ли молчаливое переписывание этого:
Встроенный в J сдвиг позволяет вам настроить символ «заливка»:
Логика определения, использовать ли первый или последний символ в качестве символа заполнения, проста
Попробуйте онлайн!
источник
J , 23 байта
Ввод n и вывод - строки, содержащие числа.
Попробуйте онлайн!
объяснение
источник
Сетчатка , 61 байт
Попробуйте онлайн!
источник
05AB1E , 16 байтов
Попробуйте онлайн!
объяснение
источник
Python 2 , 87 байт
Попробуйте онлайн!
Принимает число в виде строки, а сдвиг в виде целого числа. Возвращает строку.
Я попытался встроить реверсирование в функцию, а не делать рекурсивный вызов, но я не мог понять, что это правильно.
источник
Python 3 , 73 байта
Попробуйте онлайн!
источник
Haskell , 108 байт
О, хорошо, это пошло хуже, чем я думал ..
Попробуйте онлайн!
Ungolfed
источник
Clojure, 121 байт
Ох, противно также иметь дело с негативными данными.
источник
Pyth, 28 байт
Попробуйте онлайн или протестируйте некоторые материалы
объяснение
источник
05AB1E , 33 байта
Попробуйте онлайн!
05AB1E не так жарко с условностями.
источник
JavaScript, 80 байт
Вводит в виде строкового представления числа и числовой величины «сдвига». Возвращает строку.
Тестовый фрагмент
источник