Ваш начальник щойно надіслав вам список 12 завдань програмування, які йому потрібно виконати якнайшвидше. Завдання досить прості, але ваш начальник, будучи молодим магнатом програмного забезпечення, висмоктаним у соціальних мережах, наполягає на тому, щоб ваші рішення могли вміщуватися в одному твітері Twitter.
Це означає, що для вирішення всіх завдань у вас є лише 140 байтів коду, в середньому 11,67 байт на завдання. (Так, Twitter рахує символів, але ваш начальник спеціально сказав байти.)
Ви розумієте, що немає можливості вирішити всі 12 завдань у 140 байтах, але ви підозрюєте, що ваш начальник насправді не перевірить усі ваші рішення. Тож ви приступаєте до вирішення якомога більше завдань, повністю пропускаючи деякі з них. Ваша думка полягає в тому, що не має значення, який підмножина завдань ви виконуєте, важливо лише те, що підмножина є якомога більшою .
Скільки завдань ви можете виконати?
Виклик
Напишіть до 12 різних програм, кожна з яких точно вирішує одну з 12 перелічених нижче завдань. Сукупна сума тривалості цих програм не може перевищувати 140 байт
Крім того, ви можете написати одну програму довжиною не більше 140 байт, яка займає ціле число від 1 до 12 і (в ідеалі) продовжує вирішення відповідної задачі, за необхідності вводячи більше вводу. Не всі завдання потрібно працювати, а лише ті, які враховуються у вашому рахунку. Завдання, які не працюють, можуть помилятися чи робити щось інше.
У будь-якому випадку "програма" насправді може бути функцією, яка сприймає вхід як аргументи або підказки для цього і друкує або повертає результат. Так, наприклад, ви можете написати 140-байтну функцію, яка виглядає так f(taskNumber, taskInput)
, або ви можете написати окремі фрагменти коду для кожного завдання, деякі як функції, а деякі як повноцінні програми.
Інші деталі:
Весь код повинен бути написаний однією мовою.
Як завжди, введення має надходити зі stdin, командного рядка, аргументу функції або будь-якого звичного для вашої мови. Вихідні дані надрукуються у 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) і підрахуйте кількість рядків у ПІВНІ букви, виводячи отримане ціле число.
E
, F
, H
, I
, L
, І T
мають 4, 3, 3, 3, 2 і 2 лінії відповідно.
наприклад, GEOBITS
має 4 + 3 + 2 = 9 рядків частина ПІДБУТНИХ букв (для .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 - Обертання цифри
Візьміть ціле число від 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
' s, що представляють собою суцільні плитки. Клітини за межами сітки вважаються порожніми. Ви можете припустити, що кожен із 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 - Прем'єр-твіт
Не приймайте жодного вводу, але виведіть рядок ASCII для друку на 140 байт, який містить щонайменше один з кожного з 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
), чи враховується це двічі?