Французы пишут цифры по-особенному.
- 1-16 "нормальные"
- 17-19 прописаны 10 + 7. 10 + 8, 10 + 9 .
- 20-69 "нормальных" (ОК, ОК! Не совсем, но они в этом вызове)
- 70-79 - это 60 + 10, 60 + 11 ... 60 + 10 + 7, 60 + 10 + 8, 60 + 10 + 9 .
- 80-99 : 4 * 20, 4 * 20 + 1, 4 * 20 + 2 ... 4 * 20 + 16, 4 * 20 + 10 + 7, 4 * 20 + 10 + 8, 4 * 20 + 10 +. 9
Вызов:
Возьмите положительное целое число в диапазоне [1100] и выведите его «по-французски». Вы должны вывести его точно так , как это показано ниже, с *
и +
, так 97
это 4*20+10+7
, не [4 20 10 7]
или что - то другое.
Тестовые случаи:
1 - 1
.. - ..
16 - 16
17 - 10+7
18 - 10+8
19 - 10+9
20 - 20
21 - 21
.. - ..
69 - 69
70 - 60+10
71 - 60+11
72 - 60+12
77 - 60+10+7
78 - 60+10+8
79 - 60+10+9
80 - 4*20
81 - 4*20+1
82 - 4*20+2
.. - ..
90 - 4*20+10
91 - 4*20+11
96 - 4*20+16
97 - 4*20+10+7
98 - 4*20+10+8
99 - 4*20+10+9
100 - 100
code-golf
number
kolmogorov-complexity
Стьюи Гриффин
источник
источник
16
к10+7
выше. (В английском это происходит между12
и10+3
с немного более морфологической маскировкой.) Я всегда был немного переоценен с тем фактом, что разные языки делают этот переход в разном количестве.22
когда «dix-huit»10+8
?Ответы:
Excel,
153149 байтЯ уверен, что это может быть лучше, я изо всех сил пытался найти эффективный способ учета # 80.
редактировать: объединить «нормальные» случаи лучше сохранить 4 байта. # 80 все еще отстой.
Не могу найти здесь конкретного ответа, не уверен в правилах игры в гольф. Могу ли я использовать несколько ячеек в Excel и добавить количество байтов для каждой?
то есть. Для входа в ячейку А1
A2: 11 байт
A3 (результат): 125 байт
Всего 136?
источник
IF(A1=80,,IF(MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,"+"&MOD(A1,20)))
вIFS(A1=80,,MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,1,"+"&MOD(A1,20))
)
в конце, вы можете сделать то же самое в Excel? Таким образом, вы можете сохранить 5 «байтов» (на самом деле есть UCS2-символы, поэтому, если вы скажете Byte == октет, вы должны считать его в два раза). И вы должны изменить,
в;
Retina ,
5248 байт4 байта сохранены благодаря Нейлу
Попробуйте онлайн! или проверьте все входные данные (предоставленные Нилом)
объяснение
Сначала мы обрабатываем перевод 70, 80 и 90. На этих первых 3 этапах 7 в начале с другим символом, следующим за ним, заменяется на
60+1
. Аналогичным образом ,9
заменяется81
, и8
с4*20+1
. Замена по9
существу меняет его на «восемьдесят десять» и так далее, так что8
затем обрабатывается следующей заменой, которая экономит байты при записи4*20+1
дважды.Это обрабатывает случаи
17
,18
и19
, путем замены1
в каждой с10+
.Наконец, никогда не должно быть
+0
в конце, поэтому удалите его, если оно есть.источник
7-9
, но я не думаю, что вам нужен такой взгляд: попробуйте онлайн!$1
это так же долго, как и?=
.Python 2 , 98 байт
Попробуйте онлайн!
источник
JavaScript (ES6),
7371 байтБонусная версия, которая печатает числа в том виде, в каком они написаны, для дополнительных 2 байтов:
источник
23
Например, должен выводить23
, а не20+3
.(m=n%20)
m
сбрасывается0
вf(n-n%20)
вызове. (Это глобальная переменная)n<70|n>99
наn%100<70
. Кроме того, не могли бы вы добавить тест-компилятор?R, 110 байт
источник
(i-r)/10
вместоfloor(i/10)
. Иi>15
должно бытьi>16
.PHP, 99 байт (хочу быть счастливой версией)
прямой порт ETHproductions´SS , 4 байта в гольфе. Печатает числа в соответствии с запросом OP.
сломать
Я хочу быть верной версией,
11498 байтНовый подход, вдохновленный ETHproductions , печатает цифры в том виде, в котором они написаны.
попробуйте это онлайн .
сломать
источник
Python 2,
130108 байт22 байта сохранено благодаря @mathjunkie
Попробуйте онлайн!
источник
f=
потому что вы использовали это в лямбде.Пакет,
220217 байтПринимает участие в STDIN. Генерация и удаление лидирующих
+
экономит 1 байт над специальным регистром 80. Редактировать: 3 байта сохранены благодаря @ ConorO'Brien.источник
@echo off
все@
Желе , 55 байт
Попробуйте онлайн! или посмотрите набор тестов
Без сомнения, есть более короткий путь!
Как?
источник
Pyth
6156 байтПроверьте это онлайн!
Спасибо Leaky Nun за 5-байтовое улучшение!
Объяснение:
источник
*-Q100>Q69
→}/QTr6T
@]b}17 19
→}b}17 19
+"10+"eb
→j\+,Teb
Python3, 127 байт
Каждый элемент массива содержит свое представление:
Код на самом деле не создает функцию, просто массив - я не знаю, разрешено ли это. В противном случае мне пришлось бы добавить 139 байтов, добавив
f=[...].__getitem__
.источник
f=
, потому что безымянные функции (то есть выражения, которые оценивают переданную функцию) хороши, если имя не требуется для чего-то вроде рекурсии.Java 7,
9796109 байт+13 байт для исправления ошибок
80
. :(Объяснение:
Тестовый код:
Попробуй это здесь.
источник