Вступление:
Давайте посмотрим на стандартный калькулятор в Windows:
для этой задачи мы рассмотрим только следующие кнопки и проигнорируем все остальное:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Вызов:
Вход:
вы получите два входа:
- Одним из них является то, что указывает на поворот с шагом 90 градусов
- Другой - это список координат, представляющих кнопки, нажимаемые на повернутом калькуляторе.
Основываясь на первом входе, мы поворачиваем указанную выше схему по часовой стрелке с шагом 90 градусов. Так что, если ввод 0 degrees
, он остается как есть; но если это вход 270 degrees
, он будет вращаться три раза по часовой стрелке (или один раз против часовой стрелки). Вот четыре возможных макета:
Default / 0 degrees:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
90 degrees clockwise:
0 1 4 7
0 2 5 8
. 3 6 9
+ - * /
180 degrees:
+ . 0 0
- 3 2 1
* 6 5 4
/ 9 8 7
270 degrees clockwise / 90 degrees counterclockwise:
/ * - +
9 6 3 .
8 5 2 0
7 4 1 0
Второй вход представляет собой список координат в любом приемлемом формате † . Например (2D-целочисленный массив с 0 индексами):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Вывод:
выводим как сумму, так и результат (и знак равенства =
).
Пример:
Итак, если входное значение равно 270 degrees
и [[1,2],[2,3],[0,3],[1,0],[1,1]]
, выходное значение станет:
517*6=3102
Правила вызова:
- † Входные данные могут быть в любом разумном формате. Первый вход может быть
0-3
,1-4
,A-D
,0,90,180,270
и т.д. второй вход может быть 0 индексированные 2D массив, 1-индексированных 2D массив, строка, список точечных объектов и т.д. Ваш вызов. Можно даже поменять координаты x и y по сравнению с приведенными примерами входных данных. Пожалуйста, укажите, какие форматы ввода вы использовали в своем ответе! - Вам разрешено добавлять пробелы (т.е.
517 * 6 = 3102
), если вы хотите. - Вы можете добавить завершающие нули после запятой, максимум до трех (т.е.
3102.0
/3102.00
/3102.000
вместо3102
или0.430
вместо0.43
). - Вам не разрешено добавлять круглые скобки в вывод, поэтому
(((0.6+4)-0)/2)/4=0.575
не является допустимым выводом. - Вам разрешено использовать другие символы-операнды для вашего языка. Так
×
или·
вместо*
; или÷
вместо/
; и т.п. - Поскольку калькулятор автоматически вычисляет при вводе операнда, вы должны игнорировать приоритет оператора! Таким образом
10+5*3
, результатом будет45
((10+5)*3=45
), а не25
(10+(5*3)=25
)
(т.е.10
→+
→5
→*
(теперь отображается 15 на дисплее) →3
→=
(теперь отображается ответ45
)). Помните об этом при использованииeval
аналогичных функций и полученной суммы. - Там не будет никаких тестов для деления на 0.
- Не будет никаких тестовых случаев с более чем тремя десятичными цифрами в результате, поэтому нет необходимости округлять результат.
- Не будет никаких тестовых случаев, когда несколько операндов следуют друг за другом или когда две точки следуют друг за другом.
- Там не будет никаких тестов для отрицательных чисел. Знак минус (
-
) будет использоваться только как операнд, а не как отрицательный. - Не будет никаких тестов
.##
без запятой перед запятой (т.е.2+.7
не будет допустимым тестом, но2+0.7
может быть).
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - Применяются стандартные правила вашему ответу , поэтому вы можете использовать STDIN / STDOUT, функции / метод с соответствующими параметрами, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
Тестовые случаи:
Input: 270 degrees & [[1,2],[2,3],[0,3],[1,0],[1,1]]
Output: 517*6=3102
Input: 90 degrees & [[3,1],[0,0],[0,1],[3,3],[2,0],[0,3],[0,0],[0,2],[3,0],[2,1]]
Output: 800/4+0.75=200.75
Input: 0 degrees & [[0,0],[1,0],[2,0],[3,0],[1,2],[2,1],[2,2]]
Output: 789/263=3
Input: 180 degrees & [[3,0],[1,0],[1,2],[0,0],[3,2],[0,1],[2,0],[0,3],[2,1],[0,3],[3,2]]
Output: 0.6+4-0/2/4=0.575
1+-*/+-*/2
даст 0.5
на Windows (10) калькулятор.
[1,3],
2+.7
?