Вызов
При заданном вводе в форме, <n1>, <n2>
где число может быть -1, 0 или 1, вернуть соответствующее основное направление . Положительные числа перемещаются на восток по оси x и на юг по оси y, отрицательные числа перемещаются на запад по оси x и на север по оси y.
Выход должен быть в форме South East
, North East
, North
. Это чувствительно к регистру.
Если ввод 0, 0, ваша программа должна вернуться That goes nowhere, silly!
.
Пример ввода / вывода:
1, 1
-> South East
0, 1
-> South
1, -1
-> North East
0, 0
-> That goes nowhere, silly!
Это код-гольф , выигрывает самый короткий ответ в байтах.
code-golf
string
kolmogorov-complexity
Матиас К
источник
источник
Ответы:
Japt ,
5551 байтобъяснение
Попробуйте онлайн!
источник
Python,
10187 байтДействительно наивное решение.
Спасибо @Lynn за сохранение 14 байтов! Изменения: использование метода string.split фактически увеличивает его; _; А также, отрицательные индексы существуют в Python.
источник
lambda x,y:('','South ','North ')[y]+('','East','West')[x]or'That goes nowhere, silly!'
lambda x,y:'North htuoS'[::x][:6]+'EastseW'[::y][:4]
Правка: теперь это, вероятно, будет слишком длинным, но вы можете сделать вторую нарезку[:6*x**2]
, аналогично для строки восток / запад, если вы можете обойти ошибку при первом разрезании.lambda x,y:('North ','South ')[y+1]+('West','East')[x+1]or'That goes nowhere, silly!'
короче на 2 байтаSouth East
на(0, 0)
. Однако, спасибо!PHP, 101 байт
источник
Perl 6 , 79 байт
Попытайся
Expanded:
источник
JavaScript (ES6),
1061009793 байтаЭто очень простой подход. Он состоит из нескольких троичных операторов, вложенных вместе -
Тестовые случаи
источник
a!=0
может быть заменено простоa
, так как 0 ложно, а все остальные значения верны. Кроме того, получение ввода в синтаксисе каррирования короче, и доступ к массиву также короче.f=a=>b=>
и вызвав функцию какf(1729)(1458)
; это то,currying syntax
что @Luke упомянул.a|b
вместоa||b
. Предполагая, что вход состоит только из -1, 0 или 1 (что мне неясно), вы можете заменитьa>0
иb>0
на~a
и~b
.a?(...):""
/b?(...):""
Пакетный, 156 байт
for
Цикл выступает в качестве справочной таблицы для фильтра , когда (возможно , сведены на нет) параметр равен -1, и конкатенации подходящих слов. Если ничего не выбрано, вместо этого печатается глупое сообщение.источник
JavaScript (ES6), 86 байт
объяснение
Назовите его с карринг синтаксисом (
f(a)(b)
). Это использует индексы массива. Если обаa
иb
равны 0, результатом является ложная пустая строка. В этом случае строка после||
возвращается.Попытайся
Попробуйте все тестовые примеры здесь:
источник
GNU sed , 100 + 1 (флаг r) = 101 байт
По сути, sed выполняет сценарий столько раз, сколько имеется строк ввода, поэтому при необходимости можно выполнить все тестовые случаи за один прогон. Ссылка TIO ниже делает именно это.
Попробуйте онлайн!
Объяснение:
Оставшееся пространство шаблона в конце цикла печатается неявно.
источник
05AB1E ,
484543 байтаПопробуйте онлайн!
объяснение
источник
Желе , 40 байт
Попробуйте онлайн!
источник
Japt , 56 байт
Попробуйте онлайн! | Тестирование
Объяснение:
источник
00
это точно так же , как0
, как дополнительная цифра становится удалена;)Retina ,
848281 байт1 байт сохранен благодаря @seshoumara за предложение
0...?
вместо0\w* ?
Попробуйте онлайн!
источник
Nor
иSou
)0...?
.Swift 151 байт
источник
PHP, 95 байт.
Это просто отображает элемент массива, а если ничего нет, просто отображает сообщение «по умолчанию».
Это предназначено для запуска с
-r
флагом, принимая координаты в качестве 1-го и 2-го аргументов.источник
C # ,
95102 байтаGolfed
Ungolfed
Ungolfed читаемый
Полный код
релизы
+ 7 bytes
обернутый фрагмент в функцию.95 bytes
- Исходное решение.Примечания
Я призрак, бу!
источник
(a,b)=>{...}
битa=>b=>
, возможно , не нужно()
вокругa|b
, вы можете быть в состоянии использовать интерполированные строки , чтобы получить строку построена красивее, а()
всегоa|b
, мне это нужно, в противном случаеOperator '|' cannot be applied to operands of type 'int' and 'bool'
. Я также попробовал интерполированные строки, но не дал много, хотя из-за""
выдачи мне ошибок.Scala, 107 байт
Попробуйте онлайн
Чтобы использовать это, объявите это как функцию и вызовите это:
Как это устроено
источник
C 103 байта
источник
Java 7, 130 байт
Объяснение:
Тестовый код:
Попробуй это здесь.
Выход:
источник
CJam , 68 байт
Попробуйте онлайн! или проверьте все тестовые случаи
Печать одного пробела на
[0 -1]
или[0 1]
(North
илиSouth
).объяснение
источник
Röda , 100 байт
Попробуйте онлайн!
Это тривиальное решение, похожее на некоторые другие ответы.
источник