вход
Вам дают 2D карту с шарами и землей в ней. Это выглядит так:
1 5 2
3
4
__________________________
Каждый номер - это шар, а _
это уровень земли. Символ подчеркивания _
не допускается ни в какой другой строке, кроме линии уровня земли. Есть только пробелы, новые строки и цифры0-9
разрешенные над уровнем земли. Вы не можете предполагать, что последняя линия - уровень земли - допускаются пустые линии ниже уровня земли. Вы также можете добавить пробелы, чтобы заполнить пустые строки, если это вам поможет.
Шары могут иметь номера от 0
до 9
, могут быть размещены друг над другом, но не под землей. Номера мяча будут уникальными.
Предположим, что каждый персонаж составляет один метр .
Получить карту из pastebin!
Тестовый пример 1 - должен выводить что-то вроде этого
Тестовый пример 2 - должен давать те же результаты, что и первая карта
Вызов
Ваша задача - прочитать такую карту из файла или из stdin
- вам разрешено использоватьcat balls.txt | ./yourexecutable
- и вывести скорость каждого шарика, когда он падает на землю.
Предположим, что h
это разность номеров линий между номером линии земли и номером линии мяча, и она g
равна 10m/s^2
.
Выход
Вы должны вывести число и скорость каждого шарика m/s
на уровне земли. Например N - Vm/s
, где N
номер шара и V
его скорость. Вы также можете вывести массив, если хотите.
Удачного кодирования! :)
Ответы:
MATL ,
31302725 байтовВвод - это двумерный массив символов с
;
разделителем строк:Попробуйте онлайн! Или включите инициал
t
в код для отображения карты для большей наглядности.Вот другие тестовые случаи: первый , второй .
объяснение
источник
C
125122121 байтСкомпилируйте и запустите
gcc -w golf.c -lm && cat balls.txt | ./a.out
.источник
0 ... 9
в текстовом файле встречается символ, отличный от символа . В любом случае +1, потому что я не виноват в том, что не указал на это_
. Однако это можно исправить с помощью одного дополнительного байта (!=
вместо<
).C -
194 (-5)150137 байтовПотратив немного больше времени на размышления, я проиграл 44 байта.
Спасибо orlp за помощь в экономии 13 байтов.
Я начну с моего кода C:
И человекочитаемая версия:
Скомпилируйте и запустите так:
gcc -o balls ballsgolf.c -lm && cat 1.txt | ./balls
Выход
источник
~(c=getchar())
вместо(c=getchar())!=EOF
.if (x != -1)
такой же, какif (~x)
(на двух дополняющих машинах), потому что~-1
есть (однозначно)0
. В С гольф никогда не используютwhile(cond)
, так какfor(;cond;)
он такой же длинный и предоставляет больше возможностей для игры в гольф. В вашем примере это может статьfor(;~(c=getchar());n=c==95?l:n)b[c]=(l+=c==10);
.l=1
можно обойти, сделавl
первый аргумент дляmain
, так как среда выполнения C передает число аргументов в main в качестве первого аргумента (argc
), а когда вы вызываете программу без аргументов командной строки (./a.out
), тогдаargc = l = 1
.n=0;
не требуется, так как глобальные целые числа автоматически инициализируются в 0. Так что простоn;
будет достаточно.Пиф,
27262524 байтаПопробуйте онлайн!
источник
Matlab,
100968990 байтМногие байты сохранены благодаря Луису Мендо
Формат ввода:
Объяснение:
источник
Python 3, 84 байта
Версия 6, 84 байта: (Спасибо Leaky Nun!)
Версия 5, 91 байт:
Версия 4, 92 байта:
Версия 3, 99 байт:
Версия 2, 102 байта:
Вышеуказанные версии принимают массив строк в качестве входных данных.
Версия 1, 140 байт:
Это берет каталог файла как ввод от пользователя.
источник
1 for l in i
->1for l in i
(n-1)*20
->~-n*20
print
вызовом?e
, потому что тогда токенизатор Python попытается проанализировать его как научную нотацию с плавающей запятой (например,1e5
). Пример , который терпит неудачу:f = lambda n:-1if n<0else 1
. Пример, который терпит неудачу в обеих версиях Python0or 1
, так как токенизатор считает, что0o
начинается восьмеричное число.Python 3, 84 байта
Анонимная функция, которая принимает входные данные в качестве аргумента в виде многострочной строки со всеми пустыми строками, заполненными пробелами, и возвращает массив, где каждый элемент имеет форму [номер шара, скорость].
Как это устроено
Попробуйте это на Ideone
источник
f = MyAnswer
, а затем позвонить, используяf(x)
. Существует консенсус, что нет необходимости называть лямбды . Кстати, хороший вызов!JavaScript (ES6) 93
Редактирование 2 байт сохраненного ТНХ @Jacajack
Функция с многострочной строкой в качестве входного параметра. Вывод не сортируется (так как это не запрашивается)
Тестовое задание
источник
sqrt(x)
будет короче чемpow(x,.5)
?