Испытание на 9 лунок
- 9 кодов игры в гольф различной сложности.
- Штрафы за использование одного и того же языка более одного раза.
Вопрос будет дополнен парсами, чемпионами и призерами.
Это из-за соревнования с друзьями, это не обычный формат, но я надеюсь, что некоторые из вас оценят разные варианты. Проблемы, правила и трофеи ниже.
Отверстия
Гринуэй (24)
f(c:string, n:integer)
Печатает строку, содержащуюn
экземплярыc
.Где-то в грубой (73)
f(t:string, s:string, n:integer) -> i
Гдеi
индексnth
экземпляраs
вt
.Карри на ужин (6235)
f(x:function, y: function) -> g
Гдеg
функция, которая будет вызыватьy
,n
раз; гдеn
возвращаемое значениеx
Spew (92)
f(p:string)
Записывает в файл вp
и заполняет его произвольным размером прямоугольника случайных символов (ascii).Охота за сокровищами (75)
f(p:string, c:char) -> (x, y)
Считывает файл вp
котором содержится сетка символов и возвращаетx
иy
координаты первого экземпляра этого символа в сетке, предположим , что существует.Мост через реку Квай (179)
f(l:list[int])
Печать разностных мостов для схемыl
. Например, для[1,7,3,17,1]
/+6\ /-4\ /+14\ /-16\ 1 7 3 17 1
Убедитесь, что пробелы созданы в соответствии с размером числа выше. Для трехзначного числа вам понадобятся 4 пробела между цифрами в строке ниже.
Поймать: где-то в вашем коде должны быть написаны брюки (должен быть хотя бы 1 не буквенно-цифровой разделитель. Например,
tr(ou,se)(rs)
Время летит, когда вы играете в гольф (1157)
f(p:string) -> [h, m]
Считывает файл, вp
котором содержится ASCII-представление аналоговых часов, где часовая стрелка представлена одной строкой, а минуты - двумя. Выведите список, содержащий два элемента: часы и минуты, показанные на часах. Если видна только одна рука, предположим, что обе точки указывают на это положение.Вот все возможные комбинации для руки.
\ | / \|/ --o-- /|\ / | \
Эти позиции, соответственно, (12, 1, 3, 5, 6, 7, 9, 11). Предположим, что другие символы на циферблате являются пробелами.
Timber! ()
f(p:string) -> b:boolean
Где p - путь к файлу со встроенным ascii. Блоки с пробелами под ними будут падать. (За исключением слешей, которые остаются на месте, если есть устойчивый блок в направлении, противоположном тому, как они смотрят). Если здание конструктивно цельное, верните true, в противном случае верните false. Все блоки без пробелов считаются сплошными и, кроме слешей, все они падаютКонструктивно безопасный
____ |/\| | |
Небезопасный
|__ | |
Безопасная версия
|__ \\| |
Новости бездельника (218)
f(s:string, r:string, p:string)
Получает заголовки 20 лучших статей в Hacker News и изменяет все экземплярыs
наr
, затем записывает новые заголовки в html-файлp
, где каждый заголовок содержится в элементе h1.Выходной файл должен выглядеть примерно так
<h1>Some title</h1></h1>Some other title</h1>...etc
Поймать :
- Вы не можете использовать API HN.
- Вы не можете использовать Regex.
- Вы не можете использовать угловые скобки где-либо в вашем коде.
счет
- Количество символов - это длина функции, которая будет правильно скомпилирована и запущена. Однако вам все равно нужно предоставить полный код, включая импорт.
- + 10% за каждый повторный язык в вашем представлении. (Например, если вы используете Ruby для 3-х решений, ваш окончательный результат будет умножен на 1,2). Различные версии одного и того же языка считаются одним и тем же языком.
- Par будет средний балл для каждой лунки.
- Представьте свои решения в одном ответе.
- Ваш общий балл - это количество персонажей + штраф за язык, а затем округлите его.
Трофеи
- Золотая куртка - ( @Sprigyig - 1290) Самый низкий общий балл
- Shooter - ( @Sprigyig - 9) Большинство используемых языков
- Бункер - большинство выше номинала на любой лунке
- Змеи на самолете - ( @AsksAnyway - 1727) Максимальная подача символов Python в одном решении
- Хорошие части - ( @AsksAnyway - 255) Максимальное количество символов JS в одном решении
- Shakey Steve - самое короткое решение, использующее интерфейсы
- Вы не сошли с ума - самое короткое уникальное языковое решение, которое имеет самую короткую страницу википедии.
- Happy Gilmoore - ( @AsksAnyway - 31) Самое короткое решение, в коде которого есть слово «аллигатор».
- Unicycling Dwarf Magic - Расширения по умолчанию ваших 9 исходных файлов представляют собой идеальную анаграмму слова в Оксфордском словаре.
Вы можете претендовать на трофей только после того, как пройдете все 9 лунок
Материалы
- @Sprigyig 1290
- @Firefly 1320
- @grc 1395
- @Trevor M 1465
- @C Gearhart 1654
- @ Гай Сиртон 1719
- @AsksAnyway 4651
источник
<
&>
/
позиция относилась к 1 часу или 2 часам? (и аналогично для всех остальных диагоналей)Ответы:
Счет: 4651
2907 + 60% штрафа
1. GolfScript - 14 символов
Использование:
c n a
например"test" 3 a
->testtesttest
Счастливого Гилмура
2. Python - 72 символа
3. Javascript - 255 символов
Бункер Good Parts
4. Питон - 132 символа
5. Питон - 89 символов
6. Питон - 189 символов
7. Питон - 1727 символов
Змеи на самолете
8. Питон - 226 символов
9. Питон - 203 символа
источник
i<i<42
), или они разрешены, если вы используете их только как операторы?Счет: 1320
У меня есть много дел, чтобы улучшить этот счет ... Ну, по крайней мере, я избежал штрафов за повторный язык. :-)
1. Питон (21 символ)
«Очевидное» решение.
2. ECMAScript 6 (47 символов)
Находит индекс немного нетрадиционным способом, считая длину подстроки перед ним.
3. J (12 символов)
Встроенное соединение
^:
возводит функцию в степень (т.е. повторяет функцию заданное количество раз). То естьf^:3 y = f (f (f y)))
. Однако он перегружен, чтобы принимать функции, а не целые числа, и в этом случае он запускает функцию на входе, чтобы получить количество повторений. К сожалению, нам нужно перевернуть операнды для этой задачи, иначе у нас был бы краткий ответf=:^:
.4. С (95 символов)
Эта задача оставляет достаточно места для интерпретации и злоупотребления: можно ли просто вывести произвольный печатный символ ASCII и сказать, что это прямоугольник со случайным размером с размерами из набора {1}? Возможно нет. Во всяком случае, я пошел с простой,
rand()
но на самом деле вы, вероятно, хотите добавить%9
или что-то, если вы хотите проверить это. На моем Linux-компьютере мне не нужно было сбрасывать файл, чтобы он был записан (я полагаю, он автоматически сбрасывается при выходе из программы), но я почти уверен, что вы должны сбросить его, чтобы он соответствовал стандартам, так что бесплатно добавитьfflush(f);
к счету здесь.5. Haskell (100 символов)
Мне нравится повторяющийся шаблон между поиском строки и столбца (абстрагировано с помощью
h
).6. Луа (261 символ)
Использует множественные возвращаемые значения и рекурсию для вычисления различий. Это стоило мне нескольких символов, чтобы точно соответствовать образцу вывода (добавляя правильное количество пробелов везде).
7. Go (307 символов)
Возможно, можно играть в гольф гораздо больше; Я едва знаю, Го.
8. CoffeeScript (+ node.js) (223 символа)
Немного дешевка, так как у меня уже есть JS. Ну что ж. Возвращает ложное значение (а именно
undefined
) или истинное значение (а именно1
), чтобы указать ответ.9. Баш (254 символа)
(Новые строки после каналов добавлены для удобства чтения.) Обойти ограничения с оболочкой было весело. Я понимаю, что, возможно, есть лучший способ сделать это
$2,$4,$6,...
, но я все равно придумал это.источник
f=str.__mul__
Счет: 1 394,4
996 символов + штраф 40%
1. Greenway - Haskell, 19 символов
Использование:
2. Грубый - PHP, 72 символа
3. Карри - JavaScript 1.8, 45 символов
4. Spew - J, 43 символа
Использование:
5. Сокровище - J, 64 символа
Использование:
6. Мост - Питон, 166 символов
7. Время - Питон, 205 символов
Предполагается, что строки дополняются пробелом шириной пять символов. Использует вкладки для второго уровня отступа.
8. Древесина - питон, 190 символов
9. Slacker - Python, 192 символа
Спасибо Tyzoid за идею сокращения URL.
источник
Изменить: думаю, я просто отправлю это как есть: всего 1290, без повторений языка.
Гринуэй, C # 53
Я решил поменять языки с № 1 и № 9. Всего стоит 30 здесь для сотен позже.
Где-то в грубой, Python 59
Я действительно не должен был использовать такой хороший язык для легкой проблемы. Кроме того, как это не входит в семейство функций indexOf какого-либо языка? Мне кажется, это всегда нужно ...
Карри на ужин, Лисп 61
Я не прикасался к Лису с той недели в колледже ...
Spew, Bash / shell утилит 102
Мой bash-foo никогда не был так хорош для начала. Я возлюсь с этим позже. Кстати, если вы хотите, чтобы он заканчивался быстрее, переключите его на / dev / urandom.
Охота за сокровищами, C 113
Вероятно, одна из наиболее дружественных проблем. Я интерпретировал «вернуть два целых числа» как взять указатель на возвращаемый массив в качестве аргумента. Предупреждения? Какие предупреждения? Int * так же хорош, как и FILE * = p.
Мост через реку Квай, Perl 207
Я начал изучать Perl, когда писал этот. (Лучше поздно, чем никогда!) Я пришел к этому, желая создать героику регулярных выражений, поэтому я формирую строку как оба слоя моста вместе, а затем использую регулярные выражения с заменами пробелов для формирования двух разных строк.
Время летит, когда вы играете в гольф, Java 297
Вы можете сделать только так, чтобы сделать Java кратким ... Предполагается, что часы заполнены пробелом, поэтому каждая строка имеет 5 пробелов.
Timber! Javascript 201
Он работает в консоли Chrome. Я не даю никаких гарантий в другом месте = р. Требуется, чтобы линии были пробелами по длине самой длинной строки. Я чувствую, что это разумный запрос искусства ASCII.
Slacker News, Ruby 197
источник
Было весело прикоснуться к нескольким языкам немного ...
Количество символов, полученное после удаления ненужных пробелов / новых строк, но представление в основном оставалось читаемым Поскольку речь идет о сочетании функций и программ, я включил в них только тело функции, где это необходимо ... Кроме того, была дана некоторая свобода с тем, что означает "возврат" ...
Итого ~ 1719
1- Питон (~ 20)
2- С (~ 109)
Читаемая версия:
3- Javascript (~ 56)
4- Rexx (~ 136)
5- Скала (~ 290)
6- С ++ (~ 355)
7- Go (~ 301)
Обратите внимание, что это требует дополнения часов (т.е. все строки имеют одинаковую длину).
8- Рубин (~ 259)
9 - взлом bash / Unix (~ 193)
источник
Не совсем здесь, в гольф, но вот немного Tcl, так как язык нуждается в большей любви:
В большинстве случаев непроверенный, потому что написание этих процедур за полчаса гораздо интереснее, чем попытка правильно разработать код для игры в гольф. Наслаждайтесь!
источник
Только успел поработать на 1/2 из них. Вы, кажется, хотите их в форме функции, а не одного вкладыша. Так что все это функции. Тестирование кода ниже функции. В перл.
Зеленый путь:
Грубый:
Карри:
изрыгать:
Сокровище:
Я буду работать 6-9 завтра.
источник
WIP. Обратите внимание, что количество символов может быть отключено из-за
'\n'
иwc
[1 Greenway] Mindf * ck, 54 персонажа
Использование: Как только код написан, введите вашу строку и завершите вашу строку с помощью ^ a (ctr + a), а затем сразу после введите ваш номер.
Одно предостережение: приведенное число должно быть только от 0-9 (если вы хотите большее, значение ascii-48 любого введенного вами символа будет использоваться как
n
)Скриншот:
[3 карри на ужин] Javascript, 59 символов
[4 Spew] BASH, 56 символов
[7 Время летит, когда вы играете в гольф] C, 334 символа (412 с определением макроса)
Примечание: эта функция возвращает указатель на двумерный целочисленный массив, отформатированный так: {3, 55} (для часовой позиции часа на 3, минуты на 11)
[9 Slacker News] PHP, 246 символов
Отдельная / оригинальная реализация в BASH + AWK, 218 символов
источник
1654
1. Гринуэй (Хаскелл - 37)
2. Где-то в Грубом (Mathematica - 43)
3. Карри на ужин (Лисп - 58)
4. Spew (Matlab / Octave - 83)
5. Охота за сокровищами (C - 176)
6. Мост через реку Квай (Рубин - 192)
7. Время летит, когда вы играете в гольф (Node.js - 406)
8. Древесина! (Go - 329)
9. Slacker News (Python - 330)
источник
Я мошенник, и я не сыграл все 9 лунок ... пока . Тем не менее, вот моя дыра 8, решение «Timber» в Perl (149 символов).
Один из моих коллег назвал это вызовом на работе. Нам было весело с этим, особенно со мной, так как у меня пока самое низкое номинальное решение!
Наши правила заключались в том, что это должен был быть отдельный скрипт, который выводил
true
илиfalse
сопровождался переводом новой строкиSTDOUT
, и что «шебанг» не был в порядке.Ниже приведено «минимизированное» решение. Я также изложил « суть » того же, что включает в себя не «минимизированный» код и (часто мучительно длинные) объяснения причин моего подхода.
источник
Мне лень его модифицировать в соответствии с правилами конкурса Мех, но он работает нормально ...
источник
Первый код гольф! (Все еще в стадии разработки ...)
1. Гринуэй
Язык: Python 3.2.3
Размер файла: 23 байта
Код:
3. Карри на ужин
Язык: Python 3.2.3
Размер файла: 64 байта
Код:
источник
Здесь еще одна работа, и я на работе, поэтому я вернусь позже.
Greenway в Ruby (14 символов, 24 с #alligator ), вызов с
f.(c, n)
Скриншот
Где-то в Rough в CoffeeScript (38 символов)
Скриншот
Карри на ужин в JavaScript (54 символа)
Скриншот
Выплюнуть в PHP (111 символов)
Это необходимо
short_open_tag
в файле конфигурации PHP для включения. В противном случае должен быть открывающий разделитель<?php
,@
символы используются для заглушенияPHP_NOTICE
ошибок, которые выбрасываются, чтобы избежать включенияrand
в кавычки и для явного объявления$s
переменной. Это создаст квадратную сетку символов ascii от 4 до 30 символов на обеих осях.Скриншот
источник
1. Гринуэй (Питон 2:20)
Пример ввода:
a("asdf",3)
-> string (asdfasdfasdf
)2. Где-то в Грубом (Python 2: 47)
Пример ввода:
b("1,2,333,4,5,6",",",3)
-> int (7)3. Карри на ужин (Javascript: 61)
Пример ввода:
function z(){ return 3; }; function y(){ console.log( '1' ) }; myfunc = c(z,y); myfunc();
-> входstring(1)
в консоль ... 3 раза.Согласно спецификации,
c
возвращает функцию и фактически не выполняет эту функцию сама.4. Изверг (С ++ 11: 171)
На самом деле не проверял это, но должно работать.
источник
Некоторые отступы остаются нетронутыми для удобства чтения, но они были удалены при подсчете символов. Всего около
1227. Или нет, я забыл проблему.14861465 знаков.1. MIPS ASM (55 символов)
2. Схема (52 символа)
3. F # (39 символов)
4. Powershell (133 символа)
5. C ++ (
184152 символа)6. C # (
291282 символа)7. Haskell (
318306 символов)Я искал оправдание, чтобы опробовать Хаскель. Я думал, что был умен, генерируя список позиций с помощью комбинаций чисел, но с количеством символов, которое потребовалось, я мог бы жестко закодировать эту чертову штуку. Ну что ж. Код ужасен, но в любом случае было весело писать.
редактировать: исправлено, поэтому он правильно возвращает минуты.
8. Луа (259 символов)
Я был удивлен, обнаружив, что строки не поддерживают индексацию стиля массива, поэтому мне пришлось положиться на sub.
9. Питон (187 символов)
Спасибо grc / Tyroid за сокращение URL.
источник