задача
Учитывая букву (A, B, C) и число (0-10), выведите размер соответствующего стандартного формата бумаги (серии A и B) или соответствующий стандартный размер конверта (серии C) в миллиметрах в формате aaaa x bbbb
где aaaa
и bbbb
- измерения ширины и высоты в миллиметрах согласно ISO216 (серии A и B) или ISO296 (серии C)
Чтобы упростить ситуацию, приведу таблицу размеров бумаги в Википедии.
ISO paper sizes in portrait view
Format A series B series C series
Size mm × mm mm × mm mm × mm
0 841 × 1189 1000 × 1414 917 × 1297
1 594 × 841 707 × 1000 648 × 917
2 420 × 594 500 × 707 458 × 648
3 297 × 420 353 × 500 324 × 458
4 210 × 297 250 × 353 229 × 324
5 148 × 210 176 × 250 162 × 229
6 105 × 148 125 × 176 114 × 162
7 74 × 105 88 × 125 81 × 114
8 52 × 74 62 × 88 57 × 81
9 37 × 52 44 × 62 40 × 57
10 26 × 37 31 × 44 28 × 40
Итак, примеры ввода и вывода:
**Test case 1**
Input: A4
Output: 210 x 297
**Test Case 2**
Input: B6
Output: 125 x 176
**Test Case 3**
Input: C2
Output: 458 x 648
Что следует отметить:
- Формат «210 x 297» или «1000 x 1414» и т. Д. Несмотря на то, что это предпочтительный формат, вы можете опустить «x» в своем выводе, т. Е. В виде массива или двух чисел, или любого другого, что вам нравится. пока измерение ширины выводится до высоты.
- Соотношение высоты и ширины примерно эквивалентно квадратному корню из 2, поэтому при расчете высот ширина умножается на sqrt (2), а затем округляется в большую или меньшую сторону до ближайшего миллиметра, что приводит к измерения в таблице выше. Это может помочь в игре в гольф.
- В последовательных размерах для серии, когда вы спускаетесь по столу, ширина для одного размера становится высотой для следующего. Это также может помочь вам в игре.
Правила:
- Это код-гольф. Стандартные правила применяются в результате. Оценка будет основана на количестве байтов. Наименьшее количество победит.
- Никаких глупых лазеек , мы были там раньше ... Мы не пройдем через это снова.
- Если вы можете его кодировать, то, пожалуйста, также подумайте о том, чтобы прикрепить ссылку на рабочий экземпляр вашего кода, чтобы другие программисты и игроки в гольф могли узнать, как работает ваш код. Это не обязательно, но я хотел бы призвать других сделать это, чтобы мы все могли учиться друг у друга. Я, конечно, хотел бы узнать больше о языках других игроков в гольф, где это возможно.
Удачи.
Ответы:
JavaScript (ES7), 57 байт
Сохранено 1 байт благодаря @WallyWest
источник
s=>n=>[n,n-1].map(x=>.707**x*{A:841,B:1e3,C:917}[s]+.2|0)
и он будет иметь ту же точность в вашем выводе..7071
и.2
на некоторое время и просто любопытный сдался , когда я нашел то , что работало: P.map
, вы можете использовать в{key1:1,key2:2,key3:3}[myKey]
любое время. Вам нужно только заключить в кавычки ключи, если они не являются допустимыми именами переменных.C (gcc) ,
113111907870 байтовОн должен
-lm
работать на TIO, но хорошо работает на моем компьютере без опции.Сохранено 20 байтов благодаря pizzapants184 .
Вернуть значения по указателю.
Объяснение:
источник
char
иint
(a^66?a^67:0.5:0.25:0)
наabs(a-66)/(a-63.)
Python 2 ,
1039793848381 байтПопробуйте онлайн!
источник
Пакетная, 105 байтов
41/29 ≅ √2
источник
h*.707
что будет лучше, чемh*41/29
? Имейте в виду, гениальное использование приближения!JavaScript, 53 байта
Показать фрагмент кода
Благодаря Нейлу, сохраните много байтов, используя альтернативный формат вывода.
источник
L=>N=>(g=p=>1000.2/2**(N/2+p-{A:2,B:4,C:3}[L]/8)|0)(.5)+' x '+g(0)
L=>N=>[N+1,N].map(p=>1000.2/2**(p/2-{A:2,B:4,C:3}[L]/8)|0)
Java (OpenJDK 8) , 59 байт
Попробуйте онлайн!
Вдохновлен записью С @Colera Su , а затем улучшенной мной.
источник
1000
может быть1e3
.MATL ,
343330 байтПопробуйте онлайн! или проверить все контрольные примеры
Сохранено 4 байта благодаря Луису Мендо
источник
APL (Дьялог) ,
3128 байт-2 благодаря нгн.
Полное тело программы. Предполагается
⎕IO
( я ndex O rigin)0
, что по умолчанию во многих системах. Запрашивает номер, затем письмо, оба из STDIN. Печатает на STDOUT.Попробуйте онлайн!
Слегка измененная версия позволяет протестировать все возможности сразу: попробуйте онлайн!
⍳2
первые два ɩ ndices, то есть 0 и 1⎕-
вычесть это из числового ввода4×
умножить четыре с этим(
...)+
добавить следующее⍞
ввод символов…'BC'⍳
… Это ɩ ndex в этой строке («A» даст 2, как индекс после последнего)8÷⍨
разделите это на 82*
поднять 2 в силу этого1E3÷
1000 делится на это.2+
добавить ⅕ к этому⌊
пол (круглый вниз)источник
Befunge,
695655 байтПопробуйте онлайн!
объяснение
У нас нет роскоши с плавающей запятой или чего-то подобного степенной функции в Befunge, поэтому мы вычисляем базовый размер для данного символа формата, f , следующим образом:
Затем мы многократно поворачиваем и делим эти размеры, чтобы получить соответствующее подразделение для данного номера размера.
источник