Набивання граммінгу - дванадцять завдань Tweet


42

Ваш начальник щойно надіслав вам список 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.


7
Я буду вражений, якщо комусь вдасться вирішити все менше, ніж за 140 байт, навіть із CJam / Pyth
Fatalize

9
Мені честь бути в .a ni eb ot deronoh ma Я ... ваш виклик. : P
Олексій А.

чи дозволено завдання закінчуватися помилкою після того, як результат буде надруковано на вихід?
torcado

1
Як слід рахувати байти від imports? Скажімо, я записую 5 функцій, де 2 потрібен один і той же модуль (наприклад import Math), чи враховується це двічі?
німі

@nimi На жаль, було б перераховано двічі. Хоча ви можете написати одну програму для всіх завдань і, таким чином, потрібен лише один імпорт.
Захоплення Кальвіна

Відповіді:


10

Pyth, 9 завдань у 136 байтах

Завдання 1: 7 байт

<-F_SQ0

Демонстрація

Сортуйте у порядку зменшення ( _SQ), складіть віднімання над ними ( a-b-c), перевірте, чи результат негативний.

Завдання 2: 14 байт

sho.a-sN^T6.pz

Демонстрація

Сформуйте всі рядкові перестановки ( .pz), відсортуйте їх ( o) на основі абсолютного значення різниці ( .a-) між числом ( sN) та мільйоном ( ^T6).

Візьміть перший такий рядок ( h) і перетворіть його в число. ( s).

Завдання 4: 19 байт

s/L+\EPP*3"EFHILT"z

Демонстрація

Повторіть "EFHILT"три рази ( *3), видаліть пробіл LT( PP) і додайте E( +\E). Позначте кожну букву на вкладі до її кількості в цьому рядку. ( /L ... z). Сума. ( s).

Завдання 5: 16 байт

u+"Alex "_GhQ".A

Демонстрація

Починаючи з "A.", поверніть назад і додайте "Alex "до початку, введіть + 1 раз.

Завдання 7: 13 байт

}Y-RTsMM./sMz

Перетворіть вхідний рядок у список одноцифрових чисел ( sMz). Сформуйте всі розділи ( ./). Підсумовуйте кожен елемент кожного розділу ( sMM). Видаліть усі 10 з кожного підсписку ( -RT). Перевірте, чи це викреслює будь-який із списків, перевіривши, чи порожній список є у загальному списку ( }Y).

Завдання 8: 11 байт

*3h%%CQC\Ç4

Демонстрація

Модульна магія. Перетворити на число ( CQ), взяти мод 199 ( C\Ç= 199) і взяти цей мод 4. Потім додай 1 і помножи на 3.

Завдання 9: 21 байт

J+Xz"<{[()]}>")_zJ_JJ

Демонстрація

Спочатку ми генеруємо перший рядок, який складається з введеного перекладу на дзеркальні символи ( Xz"<{[()]}>")), за яким слід зворотний вхід ( + ... _z), і зберігаємо його в J. Потім надрукуйте цей рядок, його зворотний бік і знову цей рядок ( J_JJ).

Завдання 11: 22 байти

+J"SATOR
AREPO
TEN"t_J

Демонстрація

Просто надрукуйте рядок та його перевернення, але не дублюйте центр N.

Завдання 12: 13 байт

++G*19\3srd\

Демонстрація

У кінці коду є невидимий DEL( 7F) символ.

Це відбитки

abcdefghijklmnopqrstuvwxyz3333333333333333333 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

яка має суму символів 11321. Він складається з Gалфавіту, 19 3с, та всіх друкованих символів ASCII.


28

CJam, 8 9 завдань на 140 байт

По-перше, ось сценарій, за допомогою якого можна сортувати свої рішення та розповісти, які з них впишуться у твіт:

{\s\Se[oSo}:F;
qN/ee{W=,}${)_,_T+:T140>X*_{0:X;}*'=@11+*N+*o\~)YF_,ZFTZFoNo}/

Просто вставте свої 12 рішень у вхід, по одному у кожному рядку. Виконати його тут. Перший стовпець - це номер завдання, другий - його розмір (у символах - вам доведеться це виправити самостійно, якщо це відрізняється від кількості байтів), третій - сукупний розмір. Програми, які вписуються в твіт, відокремлюються від решти рядком ===.

Для мене результат виглядає так:

 1   7   7 q~$~\->
 8  10  17 qDbJ%5/)3*
12  12  29 ',32>_51>'d
 7  13  42 Aq{~-Ace|}/N&
 2  15  57 qe!{~1e6-z}$0=~
 4  19  76 q"FIHEELT"3*H<fe=:+
 5  20  96 ".A"q~){" xelA"+W%}*
 9  22 118 q_{_')>+)}%W%+_W%N@N3$
11  22 140 "SATOR\AREPO\TEN"_W%1>
====================================
 6  25 165 9,:)s3/zq~))3mdg*{W%z}*N*
 3  43 208 LLq{_'=-z({+}{'=>_)$\[{)@+\}{\(@\+}]=&}?}/\
10  45 253 0XW]_m*qN/{'.f+W%z}4*f{\~@m>fm>N*}(\{8f^.e>}/

Тож ось завдання, які я зараз можу вписати у твіт.

Завдання 1 - Чи можуть три числа утворювати трикутник? - 8 7 байт

Завдяки jimmy23013 за збереження 1 байта.

q~$~\->

Тестовий набір.

Очікується, що введення буде списком у стилі CJam.

Це досить просто: перевірте, чи більша сторона коротша за суму двох інших. Або, що рівно, переконайтеся, що найкоротша сторона довша, ніж різниця двох інших:

q~  e# Read and eval input.
$~  e# Sort the values and dump them on the stack.
\-  e# Subtract the middle value from largest.
>   e# Check if the smallest value is greater than that.

Завдання 2 - Найближче до мільйона - 15 байт

qe!{~1e6-z}$0=~

Тестовий набір.

Проста груба сила:

q        e# Read input.
e!       e# Get all permutations.
{        e# Sort by...
  ~      e#   Evaluate the permutation to get its numerical value X.
  1e6-z  e#   abs(X - 1,000,000)
}$
0=       e# Pick the first element (which minimises the difference)
~        e# Evaluate it to get rid of the leading zeroes.

Завдання 4 - ФІЛЬТИ Літери - 21 19 байт

Завдяки jimmy23013 за збереження 2 байт.

q"FIHEELT"3*H<fe=:+

Тестовий набір.

Ідея полягає в тому, щоб створити рядок, який містить кожну з ФІЛЬТЕ букв один раз для кожного їх ортогонального рядка. Це робиться за допомогою смішної маніпуляції з рядком:

q          e# Read the input.
"FIHEELT"  e# Push this string. It first contains the 3-line letters, then the 2-line 
           e# letters, where we include 'E' twice to make it count for 4.
3*         e# Repeat 3 times: "FIHEELTFIHEELTFIHEELT"
H<         e# Truncate to 17 characters: "FIHEELTFIHEELTFIH". This is chosen such that
           e# it discards the third repetition of the 2-line letters.
fe=        e# For each character in the input, count its occurrences in this new string.
:+         e# Sum them all up.

Завдання 5 - Олексій Рекурсивний А. - 27 20 байт

".A"q~){" xelA"+W%}*

Тестовий набір.

Реалізація заміни A.та .Aбезпосередньо є занадто дорогою. Натомість, ми помічаємо, що нам потрібно обробити лише один випадок, якщо кожен раз перевертати рядок. Крім того, Alexпопередження (і пробіл) кожного разу еквівалентно розширенню початкового. Ми можемо зберегти ще один байт, додавши реверс перед тим, як повернути рядок:

".A"        e# Start with ".A" (the -1st iteration if you like).
q~)         e# Read input, eval, increment (so the following block is run at least once.)
{           e# Repeat this block that many times...
  " xelA"+  e#   Append " xelA".
  W%        e#   Reverse the string.
}*

Завдання 7 - Розбиття цифр на десятки - 18 16 13 байт

Aq{~-Ace|}/N&

Тестовий набір. (З дужками навколо кожного виходу.)

Не зовсім зручне для користувача: значення "truthy" - це один новий рядок, фальшиве значення - порожній рядок.

Основна ідея проста: додайте цифри до загальної кількості, яку ми скидаємо щоразу, коли вона дорівнює рівно 10. Загальна сума повинна бути нульовою в кінці вводу. Для початку виявляється коротше до загального на 10 і віднімаємо цифри, скидаючи загальний раз, коли ми досягаємо 0. Однак нам потрібно переконатися, що ми не повернемо щось правдоподібне, коли вхід буде нульовим. Найкоротший спосіб, який я виявив, це було скинути загальну кількість символів з кодовою точкою 10 (виведення рядка), а потім в кінці перевірити, чи є насправді цей символ у стеку, а не число 10. Це працює, тому що і цілий нуль, і нульовий символ (нульовий байт) є хибними:

A     e# Push a 10, the initial running total.
q{    e# For each character in the input...
  ~-  e#   Evaluate the character to get the digit and subtract it from the total.
  Ac  e#   Push a linefeed character.
  e|  e#   Logical OR of the running total and the linefeed character (using
      e#   short-circuiting).
}/
N&    e# Take the set intersection with the string containing a linefeed character.
      e# If the total is still a number of any character other than the linefeed,
      e# this will yield an empty string. Otherwise, the string will remain unchanged
      e# and the linefeed will be printed.

Завдання 8 - Квадратний годинник - 10 байт

qDbJ%5/)3*

Тестовий набір.

Це лише якась досить випадкова модульна магія на кодах символів, яка буває хеш до правильних значень. Я досить впевнений, що щось коротше можливо, але це найкоротше, що я знайшов (програмно) для такої структури:

q   e# Read the input.
Db  e# Treat the character codes of the string as digits in base 13. This maps the
    e# four inputs to the values: 2023940117708546863
    e#                            2023940113755405840
    e#                            2023940781838850791
    e#                            2023940113755390292
J%  e# Take the result modulo 19. This gives [2, 5, 12, 18], respectively.
5/  e# Divide by 5 (rounding down). [0, 1, 2, 3], respectively.
)   e# Increment. [1, 2, 3, 4], respectively.
3*  e# Multiply by 3. [3, 6, 9, 12], respectively.

Завдання 9 - Стрічка дужок - 23 22 байти

Завдяки Sp3000 за збереження 1 байта.

q_{_')>+)}%W%+_W%N@N3$

Тестовий набір.

Досить прямолінійний. Відображення між лівою та правою дужками здійснюється за допомогою додавання 2 (або 1 для дужок):

q_      e# Read input and duplicate.
{       e# Map this block onto each character...
  _')>  e#   Duplicate and check if it's not a parenthesis.
  +     e#   Add the result, leaving parentheses unchanged and incrementing the
        e#   other bracket types.
  )     e#   Increment again.
}%
W%+     e# Reverse and add to the original, giving the middle line.
_W%     e# Duplicate and reverse, giving the first line.
N@      e# Push a linefeed, pull up the middle line.
N3$     e# Push another linefeed, copy the first line.

Завдання 11 - площа Сатора - 22 байти

"SATOR
AREPO
TEN"_W%1>

Перевірте це тут.

Мабуть, найбільш нудне рішення з усіх. Він натискає на першу половину рядка, а потім перевертає її:

"SATOR
AREPO
TEN"    e# Push everything up to the centre of the square.
_W%     e# Duplicate and reverse.
1>      e# Discard the "N", because we don't want that twice.

Завдання 12 - Простий твіт - 13 12 байт

',32>_51>'d

Перевірте це тут. (З діагностичним виведенням для результату.)

Після 'є недрукований <DEL>(0x7F), який SE викреслює. Для вставки копії використовуйте замість цієї версії:

'~),32>_51>'d

Друкований рядок є

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

Тобто, він містить один пробіг усіх символів, за яким слідує інший запуск від Sдо ~, за яким слідує один d. Сума символьних кодів - 12203. Я знайшов це за допомогою проб і помилок.

'~),32>  e# Push a string with all printable characters.
_51>     e# Duplicate this and discard the first 51 of them.
'd       e# Push a "d".

1
q~$~\-> q"FIHEELT"3*H<fe=:+.
jimmy23013

@ jimmy23013 О-о, я продовжую забувати, що у нас є e=ці дні.
Мартін Ендер

Я сподівався отримати достатньо відповідей, щоб щось розмістити, перш ніж ви помітили, як це зробити №5 у 20 символах.
Пітер Тейлор

19

Pyth, 9 завдань у 138 байт

Це зайняло досить багато часу.

Я думаю, що 9 завдань - це межа для Pyth. Включаючи наступну найкоротшу програму (площа Сатора) результати в 160 байт. Поле для гри в 20 байтів - навряд чи. Є 2 або 3 завдання, які трохи некрасиві і, можливо, їх можна скоротити, але в цілому я цілком задоволений рішеннями.

Завдання 1 - Чи можуть три числа утворити трикутник? 8 байт

>FsMc2SQ

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 2 - Найближче до мільйона, 14 байт

ho.a-^T6NsM.pz

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 4 - ФІЛЬТИ Літери, 20 байт

s*Vtsmmdd5/Lz"TLIHFE

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 5 - Олексій Рекурсивний А., 16 байт

u+"Alex "_GhQ".A

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 6 - Обертання цифри, 20 байт

jeo}zhN.uC_N3_c3jkS9

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 7 - Розбиття цифр на десятки, 15 байт

qTu+WnGTvHG-zZZ

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 8 - Квадратний годинник, 12 байт

*3%%Cz1978 5

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 9 - Кронштейн, 20 байт

V3_WtN+z_Xz"[<({})>]

Спробуйте в Інтернеті: регулярний ввід або тестовий набір

Завдання 12 - Простий твіт, 13 байт

++*d44srd\\&

Спробуйте в Інтернеті: регулярне введення


2
Поєднавши наші матеріали, ви отримаєте 133 байти.
isaacg

9

TI-BASIC, 11 12 Завдання на 728 830 байт

Завдання 1 в 7 байт

:2max(Ans)`<`sum(Ans

Введення - це список у Ans.

Завдання 2 на 92 110 байт

:seq(expr(sub(Ans,I,1)),I,1,7→L₁
:SortA(L₁
:min(7,1+sum(not(L₁
:{L₁(1)+sum(seq(L₁(I))₁₀^(I-8),I,2,7)),L₁(Ans)+sum(seq((I`>`Ans)L₁(I)₁₀^(1-I),I,2,7
:ᴇ6Ans(1+(0`>`min(ΔList(abs(1-Ans

Підказки до списку цифр Input - це рядок у Ans.

Завдання 3 у 119 байтах

:Input Str1
:"  →Str2
:For(I,1,length(Str1
:sub(Str1,I,1→Str3
:inString("`<>`",Ans
:If Ans:Then
:max(0,min(L,C+2Ans-3→C
:Else
:C+1→C
:L+1→L
:sub(Str2,1,C)+Str3+sub(Str2,C+1,L-C+1→Str2
:End
:End
:sub(Str2,2,L

Підказки для рядка. Припустимо, що C і L або не визначені, або 0.

Завдання 4 на 35 байт

:sum(int(2seq(inString("TLIHFE",sub(Ans,I,1))^.4,I,1,length(Ans

Введення - це рядок у Ans.

Завдання 5 в 63 байти

:Ans/2→C
:sub("A.A",1+2fPart(C),2
:For(I,0,C
 :"Alex "+Ans
 :If I≠C
  :Ans+" xelA
:End
:Ans

Вхід - це число в Ans.

Завдання 6 в 66 байт

: 𝑖 ^ ((Ans <7) (Ans-3 (Ans >3: For (Y, ⁻1,1: сума відхилення (seq ((5-реальна (AnsX + Ans𝑖Y) -3imag (AnsX + Ans𝑖Y)) ₁₀ ^ ( X + 1), X, ⁻1,1: Кінець

Вхід - це число в Ans.

Завдання 7 на 36 43 байти

:Input <strike>L₁</strike>Str1
:.5
:For(I,1,<strike>dim(L₁</strike>length(Str1
 :Ans+<strike>L₁(I</strike>expr(sub(Str1,I,1
 :If 10=int(Ans
  :0
:End
:not(Ans

Запрошення до списку рядків цифр .

Завдання 8 на 29 байт

:18fPart(sum(seq(I(sub(Ans,I,1)=" ")/6,I,1,15

Введення - це рядок у Ans.

Завдання 9 в 83 байтах

:For(I,1,16,2
 :If I<8
  :Ans+sub("`)}]>`",inString("`({[<`",sub(Ans,4,1)),1
 :sub(Ans,I,1)+Ans
:End
:For(I,⁻1,1
 :Disp sub(Ans,9-8abs(I),8
:End

Введення - це рядок у Ans.

Завдання 10 на 159 байт

:1→X
:Input Str1
:2+length(Str1→L
:"X
:While 2+L`>`length(Ans
 :Ans+Ans→Str2
:End
:Ans→Str3
:While 1
 :"XX
 :Ans+Str1+Ans→Str1
 :For(I,1,L
  :Ans+sub("0X.",2expr(sub(Str2,I+1,1))+not(expr(sub(Ans,I,3)+sub(Str2,I,3)+sub(Str3,I,3))),1
 :End
 :Disp sub(Ans,L+3,L
 :Str2→Str3
 :Str1→Str2
 :Input Str1
:End

Використовує X0.замість .Xoвідповідно (вибачте, нічого не відповідає). Підказки для рядка введення. Вам потрібно ввести два рядки Xs, щоб побачити весь результат, а потім 2-й + Вийти, щоб вийти.

Завдання 11 на 39 байт

:Disp "SATOR
:Disp "AREPO
:Disp "TENET
:Disp "OPERA
:Disp "ROTAS

Завдання 12 в 77 байт

: Ans + "tvm_I% LinReg (ax + b) DS <(getKeyconj (1-PropZTest (dayOfWk (Manual-Fit C / YANOVA (* рядок) (HorizRegEQUnarchive [J]! # $ &'', .234567890 >:; = ? @GBQX \^ _`qw {|} ~

Або як шістнадцятковий:

72702ABB21FFDBADBB25BB3EEF06EF16
6331BB5917746201BB695C092DBBD2BB
D3BBD4AEAE2B3A323334353637383930
3EBBD66A6CAFBBD147425158BBD7F0BB
D9BBD5BBC1BBC708BBD809BBCF

Введення - це рядок, що містить "в Ans.

Це фактично неможливо в TI-BASIC. Можна шістнадцятковим чином відредагувати основну програму та використовувати певні 2-байтні маркери, щоб отримати всі друковані символи ascii у вихідний код, але це не проблема. Проблема полягає в тому, що немає ніякого способу зберігання "символу в рядку в чистому базовому вигляді на чистому звірку без введення програми (те ж саме стосується символу, але це не друкується ascii). Однак можна ввести "рівняння поза основним, після чого ви можете використовувати basic для перетворення рівняння в рядок і відображення цієї рядка. Крім того, на екрані одночасно достатньо місця для 128 символів.


7

Perl, 4 завдання в 117 байт

Спробуємо справжню мову;)

Ще не здавались, можливо, навіть зможуть видавити 5 завдань у 140 байтах, хоча малоймовірно!

* Завдання 1: 30 + 1 = 31 байт

@F=sort@F;say$F[0]+$F[1]>$F[2]

Використання: perl -aM5.010 entry.pl input.txt

* Завдання 4: 32 + 1 = 33 байти

y/ELTFHI/4223/;s/./+$&/g;$_=eval

Використання: perl -p entry.pl input.txt

Завдання 5: 54 байти

say"Alex "x($_/2+1).qw(A. .A)[$_%2]." xelA"x(--$_/2+1)

-2b завдяки Дому Гастінгсу

Використання: echo 4 | perl -M5.010 entry.pl

Завдання 7: 37 + 2 = 39 байт

($i+=$_)>10&&exit,$i%=10for@F;$_=!$i;

Використання: perl -pF entry.pl input.txt

* Завдання 8: 21 + 2 = 23 байти

$_=y/|_ 
/14/dr/64%14

Це трохи хитро. Вилетівши шляхом заміни кожного |з xі кожним _з yнаступною заміною просторів для отримання унікальної дві цифри рядка для одного мережива ( yyxxyxxyyx, yyxxyxxyyxyyxxxxyxyx, yyxxxxyxyxyyxyxxxyyx, yyxyxxxyyxyyxxxxyyx, yyxxxxyyx). Далі, я написав програму для грубих значень для xта yта математичних операцій, які можна було б виконати на числах, отриманих після заміни, xі yдати вихід 3,6,9,12 для кожного числа. Зрештою, x=1, y=4і операція була магія /64%14.

Використання: perl -0p entry.pl input.txt

Завдання 11: 34 байти

say"SATOR
AREPO
TENET
OPERA
ROTAS"

Використання: perl -M5.010 entry.pl

* Завдання 12: 30 байт

say d.pack"C*",32..126,83..126

Використання: perl -M5.010 entry.pl

Відмова від відповідальності: -M5.010 вважається "безкоштовною"


Невже Рубі менш реальна, ніж Перл? ;)
Мартін Ендер

9
Коли я бачу відповіді (які виглядають як шум), я б не кваліфікував Perl як справжню мову;)
Fatalize

1
Хороша робота! Я думаю , що ви можете зберегти 2 байти з qw(A. .A)[$_%2]замість ("A.",".A")[$_%2]в завданні 5, і я впевнений , що ви можете отримати ще кілька байт від ...
Будинок Гастінгс

6

Ruby, 4 завдання в 280 байт (неконкуренто)

Це лише спроба, я буду продовжувати робити завдання пізніше (і, сподіваюся, гольф існуючих).

Завдання 1

a=gets.split.map &:to_i;p a.all?{|e|e<a.inject(:+)-e}

Завдання 2

p gets.chars.permutation.map{|a|a.join.to_i}.min_by{|x|(x-1e6).abs}

Завдання 4

n,b='EFHILT',0;gets.chars.map{|c|b+=n[c]==p ? 0:[4,3,3,3,2,2][n.index c]};p b

Завдання 5

a='Alex A.';gets.to_i.times{|i|i%2<1 ? a.sub!('A.','.A xelA'):a.sub!('.A',a)};$><<a

6

TI-BASIC, 12 завдань на 994 байти

Завантажити все як груповий файл TI ( .8xg )

(Теги спойлера додаються на запит.)

Завдання 1 - Чи можуть три числа утворювати трикутник? - 7 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:2max(Ans)<sum(Ans

Завдання 2 - Найближче до мільйона - 114 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:int(10fPart(Ans\10^(\-cumSum(binomcdf(6,0→X
:"sum(\L\X\10^(\cumSum(not(binompdf(6,0→\Y1\
:SortD(\L\X
:\Y1\→X
:sum(not(\L\X
:If Ans
:Then
:If max(\L\X=1
:X+\E\6-\10^(\6-Ans→X
:SortA(\L\X
:augment(ΔList(cumSum(\L\X)),{0→X
:End
:{X,\Y1\
:Ans(1+(0>min(ΔList(abs(\E\6-Ans

Завдання 3 - Простий симулятор клавіатури - 131 127 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:Input Str1
:DelVar X1→Y
:"..→Str2
:For(Z,1,length(Str1
:sub(Str1,Z,1→Str3
:(Ans=">")-(Ans="<
:If Ans
:Then
:max(1,min(Y+Ans,X+1→Y
:Else
:sub(Str2,1,Y)+Str3+sub(Str2,Y+1,X-Y+2→Str2
:X+1→X
:Y+1→Y
:End
:End
:sub(Str2,2,X

Завдання 4 - ФІЛЬТИ Літери - 34 байти

Завантажити як програмний файл TI-83 + ( .8xp )

:sum(int(\³√(\12seq(inString("TLIHFE",sub(Ans,X,1)),X,1,length(Ans

Завдання 5 - Олексій Рекурсивний А. - 107 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:Input X
:".A..
:For(X,0,X
:Ans→Str1
:5int(.5X+.5
:sub(Str1,1,Ans+1)+sub(".A xelAlex A.",6gcd(X,2)-5,7)+sub(Str1,Ans+4,5X-Ans+1
:End
:sub(Ans,2,5X+2

Завдання 6 - Обертання цифри - 86 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:.3Ans+2(Ans=6→X
:[[9,6,3][8,5,2][7,4,1
:For(X,0,X
:rowSwap(Ans\^T\),1,3
:End
:Ans
:*row+(10,*row+(10,Ans\^T\,1,2),2,3
:For(X,1,3
:Disp Ans(3,X
:End

Завдання 7 - Розбиття цифр на десятки - 77 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:Ans+"0
:seq(expr(sub(Ans,X,1)),X,1,length(Ans
:augment(Ans,{10not(not(max(Ans→X
:1→X
:Repeat Ans≥dim(\L\X
:Ans+1
:If 10=sum(\L\X,X,Ans
:Ans+1→X
:End
:X=Ans

Завдання 8 - Квадратний годинник - 35 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:12-3max(seq(X(sub(Ans,6gcd(X,2)+X,1)≠" "),X,1,3

Завдання 9 - Стрічка дужок - 86 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:Input Str1
:For(X,1,4
:For(Y,0,1
:abs(X-9not(Y→Z
:"()[]{}<>
:sub(Ans,inString(Ans,sub(Str1,X,1))+Y,1
:Output(1,Z,Ans
:Output(2,9-Z,Ans
:Output(3,Z,Ans
:End
:End

Завдання 10 - Перімітеризація - 218 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:".
:For(A,0,\E\9
:Input Str1
:Ans+Str1→Str2
:If Str1≠".
:End
:length(Ans→X
:round(A\^-1\(Ans-2→B
:seq(expr(sub(Str2,A,1)),A,2,X-1→B
:πAns→C
:"augment(Ans,augment(Ans,\L\B))+augment(Ans,augment(\L\C,Ans))+augment(\L\B,augment(Ans,Ans→X
:seq(0,A,1,B
:\L\X→A
:For(C,0,A+1
:seq(\L\A(A+BC),A,1,B→C
:int(Ans→B
:{0
:1+not(\L\X)+not(fPart(\L\X→B
:".
:For(X,1,B+2
:Ans+sub("120",\L\B(X),1
:End
:Disp sub(Ans,2,B+2
:End

Ці заміни були зроблені: 0= ., 1= X, 2=o

Для введення даних (після запуску програми) введіть по одному рядку, натискаючи клавішу Enter при кожному розриві рядка, поки не буде списано останній рядок. Потім натисніть клавішу Enter, введіть один період, а потім натисніть клавішу Enter, щоб подати весь рядок.

Завдання 11 - площа Сатора - 38 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:Disp "SATOR","AREPO","TENET","OPERA
:"ROTAS

Завдання 12 - Простий твіт - 151 байт

Завантажити як програмний файл TI-83 + ( .8xp )

:Ans+"!#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
:For(X,1,45
:Ans+" 
:End
:Ans

Ansмає містити подвійну лапочку, виконану шляхом введення одного безпосередньо \Y1\з редактора рівнянь та запуску Equ►String(\Y1\,Str1:Str1з головного екрану.

Довжина виводу становить 140. 8 з’являється двічі, а разом з іншими символами ASCII є 45 пробілів, кожен з яких з’являється один раз. Це становить (33 + 34 + ... + 126) + 56 + 32 × 45 = 8969, простір Софі Жермен.


Я запитав ОП, і ви можете розраховувати маркер , як , sin(як відображення s, i, n, і (в завданні 12
lirtosiast

0

Python 3, 1 завдання, 268 байт, неконкурентоспроможний

Я спробував завдання №2 в Python 3.5.2 Я новачок у коді гольфу та пітона

import itertools
def f2(l):
    n=1000000
    l=list(itertools.permutations(l))
    j = len(l)
    m=[None]*j
    while j>0:
        j -= 1
        m[j]= int(''.join(str(i) for i in l[j]))
        l[j]=abs(n-m[j])
    l.sort()
    k=n-l[0]
    return(n+l[0],k)[k in m]

Ласкаво просимо до PPCG. Ви знайдете в python 3, що ви можете помістити деякі ваші висловлювання в один рядок, наприклад, ви могли б написати x=10;print(x)це.
Джордж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.