Ваш начальник только что прислал вам список из 12 задач программирования, которые ему нужно выполнить как можно скорее. Задачи достаточно просты, но ваш начальник, будучи молодым программным магнатом, занятым социальными сетями, настаивает на том, чтобы ваши решения могли поместиться в одном твиттере Twitter .
Это означает, что у вас есть всего 140 байтов кода для решения всех задач, в среднем 11,67 байта на задачу. (Да, Твиттер считает символы, но ваш босс специально сказал байтов.)
Вы понимаете, что нет способа решить все 12 задач в 140 байтах, но вы подозреваете, что ваш босс не будет на самом деле тестировать все ваши решения. Итак, вы приступаете к решению как можно большего количества задач, полностью пропуская некоторые из них. Ваше мышление заключается в том, что не имеет значения, какое подмножество задач вы выполняете, важно лишь то, что подмножество максимально велико .
Сколько заданий вы можете выполнить?
Вызов
Напишите до 12 различных программ, каждая из которых точно решает одну из 12 задач, перечисленных ниже. Суммарная сумма длин этих программ не может превышать 140 байт.
В качестве альтернативы вы можете написать одну программу длиной не более 140 байт, которая принимает целое число от 1 до 12 и (в идеале) переходит к решению соответствующей задачи, принимая больше входных данных по мере необходимости. Не все задачи должны работать, но только те, которые действительно учитываются в вашем счете. Задачи, которые не работают, могут ошибаться или делать что-либо еще.
В любом случае «программа» может фактически быть функцией, которая принимает входные данные в качестве аргументов или запрашивает их и печатает или возвращает выходные данные. Так, например, вы можете написать 140-байтовую функцию, которая выглядит как f(taskNumber, taskInput)
, или вы можете написать отдельные фрагменты кода для каждой задачи, некоторые как функции, а некоторые как полноценные программы.
Другие детали:
Весь код должен быть написан на одном языке.
Как обычно, входные данные должны поступать из стандартного ввода, командной строки, аргумента функции или из того, что обычно для вашего языка. Вывод выводится в stdout или ближайшую альтернативу вашего языка или возвращается в соответствующем типе.
Разумное количество входного форматирования хорошо; например, кавычки вокруг строк или
\n
вместо фактических новых строк.Вывод должен быть именно тем, что требуется, без постороннего форматирования или пробелов. Исключением является необязательный одиночный трейлинг-перевод строки.
Код, который выполняется только в среде REPL , не представляет собой программу или функцию.
Вы не можете писать несколько программ, которые решают несколько задач. Это либо одна программа, которая (в идеале) решает все задачи, либо (в идеале) 12 программ, каждая из которых решает одну задачу.
Публикация решения задачи, которое вы не написали или только слегка изменили, не допускается без указания авторства оригинала и, в идеале, получения разрешения. Если ваш ответ в первую очередь состоит из кратчайших решений из всех других ответов, то это должна быть вики сообщества.
счет
Представление, которое выполняет большинство задач, является победителем. Если два представления связаны, побеждает тот с наименьшим количеством байтов. Если количество байтов связано, выигрывает более ранняя отправка. Сообщество вики ответы не могут выиграть.
Обязательно сообщите нам, какие задачи вы решили, а не сколько!
Гандикап для игроков в гольф:
Вероятно, что в этой задаче будут доминировать языки игры в гольф . Многие языки могут иметь проблемы с решением даже одной или двух задач в пределах 140 байт. Поэтому вы можете отправить неконкурентный ответ, где ограничение составляет 3 твита, то есть 420 байтов. Все остальные правила остаются прежними.
Задачи
Задача 1 - Могут ли три числа образовывать треугольник?
Возьмите три положительных целых числа и выведите истинное / ложное значение, указывающее, могут ли три линии с такой длиной сформировать треугольник . Вы не можете предполагать, что числа идут в каком-то определенном порядке.
Правдивые примеры (по одному на строку):
20 82 63
1 1 1
2 3 4
1 2 2
Ложные примеры:
6 4 10
171 5 4
1 1 2
1 2 3
Задача 2 - Ближайший к миллиону
Задав строку из ровно 7 десятичных цифр (0-9), переставьте их так, чтобы получить число, максимально приближенное к одному миллиону. То есть abs(1000000 - rearrangedNumber)
должны быть сведены к минимуму.
Выведите или верните полученное число в виде целого числа, а не строки (поэтому не должно быть начальных нулей, если это не норма для вашего языка).
Например, ввод 9034318
должен привести 984331
(а не 1033489
).
2893984
должен стать 2348899
.
0001000
должен стать 1000000
.
0000020
должен стать 200000
.
Задача 3 - Простой симулятор клавиатуры
Возьмите строку из строчных букв (az), пробелов и угловых скобок <>
. Читайте слева направо, эта строка представляет клавиши, которые были нажаты на стандартной клавиатуре, когда был открыт изначально пустой текстовый редактор. Буквы и пробел соответствуют их обычным клавишам, но <
соответствуют клавише со стрелкой влево и клавише >
со стрелкой вправо, обе из которых перемещают курсор при нажатии.
<
перемещает курсор на один символ влево или ничего не делает, если курсор находится в начале строки.
>
перемещает курсор на один символ вправо или ничего не делает, если курсор находится в конце строки.
Выведите строку, которая будет в текстовом редакторе после нажатия всех клавиш во входной строке. Вывод управляющих кодов для перемещения курсора не допускается.
На входе всегда будет хотя бы один символ без стрелки.
Например, вход ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<f
должен дать the quick brown fox
.
op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>m
должен дать llammoptimizer
.
e< <c<b<a
должен дать abc e
.
<<<>><><<><toast>><<>><><<>><
должен дать toast
.
Задача 4 - ПЯТЫЕ Письма
Во многих шрифтах, 6 из заглавных букв английского алфавита полностью состоят из горизонтальных и вертикальных линий: E
, F
, H
, I
, L
, и T
. Мы назовем это ПЯТЫМИ буквами.
Возьмите строку из заглавных букв (AZ) и сосчитайте количество строк в письмах FILTHE, выводя полученное целое число.
E
, F
, H
, I
, L
, И T
имеют 4, 3, 3, 3, 2 и 2 линии соответственно.
Например, GEOBITS
имеет 4 + 3 + 2 = 9 строк части букв FILTHE (для .E..IT.
), поэтому вывод должен быть 9
.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
должен выводить 17
.
ABCDGJKMNOPQRSUVWXYZ
должен выводить 0
.
FILTHYLINESINLETTERS
должен выводить 39
.
Задача 5 - Алекс Рекурсивный А.
У нашего модератора Алексея А. довольно загадочная буква «А».
Теперь я не уверен, но я думаю, что A.
стоит .A xelA
. И я также довольно уверен, что .A
там скрытно выступает Alex A.
.
Таким образом, чтобы получить полное имя Алекса, мы должны расширить буквы A.
"и .A
":
Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.
Сделайте так, чтобы ваша программа взяла неотрицательное целое число и Alex A.
многократно ее расширила , получив полученную строку.
Таким образом ,
0
становится Alex A.
,
1
становится Alex .A xelA
,
2
становится Alex Alex A. xelA
,
3
становится Alex Alex .A xelA xelA
,
4
становится Alex Alex Alex A. xelA xelA
,
5
становится Alex Alex Alex .A xelA xelA xelA
,
и так далее.
(Я сделал это, потому что чувствовал себя плохо из-за непреднамеренного ухода Алекса из моей задачи, связанной с модом .: P)
Задача 6 - Вращение Numpad
Возьмите целое число от 1 до 9 включительно (вы можете взять его как строку). Выведите квадрат 3 × 3 цифр
789
456
123
повернут с шагом 90 °, так что входная цифра появляется в любом месте верхнего ряда. Когда 5
вводится, любое вращение является действительным, поскольку не 5
может быть повернуто наверх.
например, когда 3
вводится, оба
963
852
741
а также
321
654
987
действительные выводы.
Для ввода 4
, только
147
258
369
действительный вывод.
Задача 7 - Разделение цифр на десятки
Возьмите непустую строку десятичных цифр (0-9) и выведите истинное значение, если оно может быть разбито на смежные секции, где все цифры в каждой секции суммируют ровно 10. Если это невозможно, выведите ложное значение.
Например, 19306128
можно разделить, например 19|3061|28
, все разделы суммируются до 10 (1 + 9, 3 + 0 + 6 + 1, 2 + 8), поэтому должно быть выведено истинное значение.
Правдивые примеры (по одному на строку):
19306128
073
730
0028115111043021333109010
2222255
Ложные примеры:
6810410
9218
12341
5222225
000
Задача 8 - Квадратные часы
Возьмите многострочную строку одинакового размера.
Выведите, 12
если вход
_ _
| | |
|_ _|
Выведите, 3
если вход
_ _
| |_|
|_ _|
Выведите, 6
если вход
_ _
| | |
|_|_|
Выведите, 9
если вход
_ _
|_| |
|_ _|
Других вариантов ввода нет.
Задача 9 - Брэкет Арт
Возьмем в 4 байта строки, содержащей одно из каждого из левых скобок (
, [
, {
, и <
в любом порядке.
Добавьте соответствующие правые скобки, чтобы длина строки составляла 8 байт и имела вертикальную линию симметрии. например [<({
становится [<({})>]
.
Затем переверните каждую скобку в этой строке. например [<({})>]
становится ]>)}{(<[
.
Выведите исходную 8-байтовую строку в скобках с обращенной версией сверху и снизу в отдельных строках.
Таким образом, окончательный вывод для ввода [<({
будет
]>)}{(<[
[<({})>]
]>)}{(<[
Аналогично, выход для <({[
должен быть
>)}][{(<
<({[]})>
>)}][{(<
Ввод (<<[
неверен, потому что {
отсутствует и есть дополнительный <
.
Задача 10 - Перимитеризация
Возьмите прямоугольную сетку текста (1 × 1 по меньшей мере), состоящую из .
's, которые представляют пустое пространство, и X
', которые представляют сплошные плитки. Клетки за пределами сетки считаются пустыми. Можно предположить, что каждая из 4 строк и столбцов ребер сетки будет содержать хотя бы одну X
.
например, допустимый ввод может быть:
XXX.....X.....
X..X...X.X....
XXX.....X....X
Выведите еще одну прямоугольную сетку текста, где каждая пустая ячейка, которая граничит с X
ортогональной или диагональной, включая те , которые находятся вне входной сетки , становится o
. Таким образом, по существу, периметр o
's рисуется вокруг всех частей сплошных плиток. Новая сетка не должна быть больше, чем должна быть.
Таким образом, результат приведенного выше примера будет:
ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo
Аналогично, результат ввода XXX..X.X
должен быть
oooooooooo
oXXXooXoXo
oooooooooo
и вывод
oooooooooo.
oXXXooXoXo.
oooooooooo.
будет недействительным, так как пустой крайний правый столбец не нужен.
Вы можете использовать любые 3 различных печатаемые ASCII символы вместо .
, X
и o
.
Задача 11 - Площадь Сатор
Выведите площадь Сатора :
SATOR
AREPO
TENET
OPERA
ROTAS
Любая из букв может быть строчной или прописной, поэтому
SatOR
aRePO
tenet
OPERa
RoTaS
также допустим вывод.
Там нет ввода.
Задача 12 - Премьер Твит
Не вводите, а выводите 140-байтовую печатаемую строку ASCII, которая содержит хотя бы один из 95 печатных символов ASCII. (Таким образом, 45 символов будут дубликатами.)
Сумма кодов символов всех 140 байтов в этой строке должна быть простым числом Софи Жермен , то есть таким простым числом p
, которое 2p+1
также является простым. Код символа для пробела - 32, 33 для !
, 34 для "
и т. Д. До 126 для ~
. Сумма может быть рассчитана в Python как sum(map(ord, myString))
.
Пример вывода:
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d
Сумма кода символа - это простое число 12203, соответствующее безопасное простое число которого равно 24407.
import
s? Допустим, я пишу 5 функций, где 2 нуждаются в одном модуле (например import Math
), это считается дважды?