Вывести текст «Код Боулинг»


54

Код-Bowling

Brunswick Bowling наняла вас для создания простой программы для вывода текста Code Bowlingна мониторы. Эта компания стоит немалых денег, и вы чувствуете, что можете обмануть их за небольшие деньги.

В должностной инструкции четко сказано, что они платят на основе начисления очков, и вы вполне уверены, что можете использовать их систему начисления очков в свою пользу и получить от этих парней максимально возможный чек. Для этого вам потребуется собрать как можно больше кода в свою программу / функцию, даже если их система подсчета очков предназначена для предотвращения этого.

Убери свои копилки, давай закодируй!


Вызов

Задача состоит в том, чтобы просто вывести текст Code Bowling, в точности так, как он написан здесь, с максимально возможной оценкой. (Смотрите раздел: Система подсчета очков ниже)

Начальные и конечные новые строки (переводы строк) допустимы.

Ваш код может быть целой программой или просто исполняемой функцией.


правила

Обязательный: в этом задании используется код-боулинг: общие правила, редакция 1.0.0 ; Смотрите Meta для деталей.

  1. Характер: соотношение байтов.
    В коде-боулинге число символов предпочтительнее, чем число байтов. Очевидная причина этого заключается в том, что многобайтовые символы Юникода (например, 🁴) могут использоваться вместо однобайтовых символов Юникода для увеличения количества байтов и сделают боулинг больше о том, кто переименовывает большинство переменных с высокобайтовыми символами Юникода, а не чем тот, кто наиболее стратегически создает значимый сложный код.

  2. Имена переменных / функций / объектов
    Все имена переменных (или указатели объектов, имена функций и т. Д.) Должны быть длиной в 1 символ. Единственное приемлемое время для использования двухсимвольных имен переменных - это после того, как все возможные односимвольные переменные были использованы. Единственное приемлемое время для использования имен 3-символьных переменных - это после того, как были использованы все возможные 2-символьные переменные. И т.п.

  3. Неиспользованный код
    Весь код должен быть использован. Это означает, что программа не всегда может правильно выполнить задачу, если какой-либо отдельный символ (или различные наборы символов) удалены. Естественно, подмножество программы не должно быть в состоянии выполнить задачу самостоятельно без остальной части программы.

  4. Комментарии
    Комментарии не допускаются к подсчету символов, если они не используются вашей программой / функцией.


Система баллов:

  Pangram Challenge:

Панграмма - это предложение, которое использует каждую букву хотя бы один раз. (Быстрая коричневая лиса прыгает через ленивую собаку).

В этом типе испытаний предусмотрены системы подсчета очков, в которых совершенная панграмма набирает теоретический максимальный балл (хотя вы не обязаны использовать каждый символ хотя бы один раз). Кроме того, использование любого символа более одного раза приведет к штрафу. Эта задача также распространяется не только на буквы алфавита.

  Метрика оценки:

  1. Каждый используемый персонаж увеличивает ваш счет на 1.
  2. Повторное использование любого буквенно-цифрового символа (az, AZ, 0-9) приведет к вычету 3 балла за повтор (первое использование не приводит к вычету).
  3. Повторное использование основных знаков препинания ([!?.-,":';])- включая скобки - приведет к вычету 2 баллов за повтор.
  4. Повторное использование других символов ASCII {`~@#$%^&*_+=|\/><}- включая фигурные скобки - приведет к вычету 4 балла за повтор.
  5. Использование пробелов, табуляции и переносов приведет к вычету 1 балла за использование. То есть они не учитываются в сумме символов.
  6. Персонажи, не упомянутые выше (экзотические персонажи) , дают вычет 1 очко за использование. То есть они не учитываются в сумме символов.

  Инструмент для подсчета очков:

Создан автоматический виджет скоринга, который можно найти здесь .


Это вариант . Программа с самым высоким счетом выигрывает! (Поскольку существует максимальный балл 94, тот, кто достигнет его первым (если он может быть достигнут), будет отмечен как принятый ответ, хотя другие могут свободно отвечать ради интереса)


37
Мне удалось получить оценку -75к. Если бы это был самый низкий балл, я бы справился с этим удивительно.
ATaco

1
@carusocomputing Попробуйте головные уборы. Счет, вероятно, все еще будет ужасным. Кроме того, вы не можете использовать BF, поскольку любые некоманды являются комментариями и могут быть удалены.
mbomb007

1
Delimit подойдет для этого, потому что на самом деле его не волнует, какие символы вы используете, только комбинированный ASCII из набора символов
MildlyMilquetoast

2
Кратчайший код был бы хорошим разрывом связей в этом вызове!
Стьюи Гриффин

2
Может быть, кто-то может решить эту проблему, присудив награды другим 94-х годов
masterX244

Ответы:


36

Глифо , 94

Исходный файл закодирован в CP437 .

␀␀!"☺☺#$☻♥♥☻♦♣♦♣%♠♠&•◘•◘'○○(◙♂◙♂♀♪♪♀♫☼♫☼►◄◄►↕↕)*‼¶¶‼§§+,▬↨↨▬↑↓↑↓→←→←∟∟-.↔▲▲↔/▼▼▼⌂Ç⌂Çüééüââ01ää23àååàçêçê4ëë5èïèïîî67ìÄÄì8ÅÅ9ÉÉ:;æÆÆæô<=ôöòòöûùûù>ÿÿÿÖÖ?@ÜÜAB¢££¢¥₧¥₧CƒƒDáíáíóóEFúññúѪѪGººHI¿¿J⌐¬⌐¬K½½½¼¼LM¡««¡N»»»░░OP▒▒QR▓││▓┤╡┤╡S╢╢T╖╕╖╕U╣╣V║╗║╗╝╜╜╝W╛╛╛┐X┐┐Y└└└┴┬┴┬├─├─Z┼┼┼╞╞[\╟╟]^╚╔╔╚╩╦╩╦_╠╠`═╬═╬╧╨╨╧╤╥╥╤a╙╙╙╘╘bc╒╒de╓╓fg╫╪╪╫┘┌┌┘█▄█▄▌hi▌▐j▐▐▀αα▀ßΓßΓπΣπΣkσσσµlµµτmnτΦΘΘΦΩδΩδo∞∞∞φpφφεεqr∩≡≡∩±±st≥≤≤≥u⌠⌠⌠⌡⌡vw÷xy÷≈°°≈∙∙z{·|}·√ⁿⁿ√~²²²

Попробуйте онлайн!

объяснение

Glypho весьма полезен для подобных задач, потому что он не заботится о реальных используемых персонажах вообще. Вместо этого он смотрит на каждый блок из 4 символов, а используемая команда определяется шаблоном, который составляют эти четыре символа:

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

Это означает, что мы можем просто решить проблему, а затем заполнить уникальные символы в каждом квартете печатными символами, а все повторяющиеся - некоторыми «экзотическими» символами, которые игнорируются при подсчете очков. Glypho достаточно многословен, чтобы обычное рукописное решение содержало достаточно уникальных символов, чтобы вместить все 94 печатных символа внутри. Фактически, я закончил игру в гольф до тех пор, пока у нее не было ровно 94, просто чтобы я мог использовать уникальных экзотических персонажей для повторяющихся (надеюсь, чтобы было труднее уменьшить программу).

Сокращенная форма вышеуказанной программы такова:

11+d*d*d+d+1+1+dd1+o
d+11+d*d1+*1+-+do
11+d*d1+d**do
1+o
11+d*d*d+o
<o
ddo
11+d*d++o
111++d-<+ddo
<-+do
<1+1+o
1-+1-+o

Где каждая строка печатает один из символов.

Я использовал этот скрипт Retina, чтобы конвертировать его в Glypho 0123. После этого я только что заполнил символы вместо цифр.

Теоретически, возможно, можно было бы уменьшить это и дальше, если бы кто-то умудрился сыграть в сокращенную программу, а затем сумел рекомбинировать персонажей так, чтобы появлялись правильные шаблоны, но я не уверен, как доказать или опровергнуть это возможно , Если кому-то удастся сформировать правильное решение из подмножества моей программы, пожалуйста, дайте мне знать, чтобы я мог удалить ответ, пока он не будет исправлен. До тех пор я должен предположить, что это действительно.


Отличный материал! Я принимаю это сейчас, так 94как это максимальная оценка. Все остальные могут отправлять ответы для развлечения .
Альберт Реншоу

Отличная работа, Мартин! Если бы я был на несколько часов быстрее ...: D
mbomb007

@AlbertRenshaw Может быть, таймбрейк должен быть подсчет байтов? : D
mbomb007

49

Питон 3, 82 87 88

Спасибо @JonathanAllan за +1 балл

print("g!#$%&'*n+,./012i34579;<l=>?@ADEwFGHIJKLoMNOPQRSBTUVWXYZ ^_`abchejkmqsuvdyz{|}~ \x6f       C"[::-8])

Попробуйте онлайн!

Ничего особенного, просто нарезка и пропуск символов. Строка переворачивается, поэтому вы не можете удалить символы и получить исходную строку для печати.


2
Ого. что это хорошо.
Мэтью Ро

1
Очень хороший ответ, но почему тасуется порядок? Не было бы проще (для вас) иметь его в том порядке, в котором они естественны ( HIJKLMN...), за исключением каждого 8-го символа, конечно?
Стьюи Гриффин

@ StewieGriffin Это было бы проще, да. Я просто перебирал множества и не особо заботился о сортировке.
TidB

Есть ли причина, по которой вы заполнили других персонажей в таком странном порядке?
mbomb007

2
Ты такой, как вдохновение TidB! Мой новый вопрос :)
Стьюи Гриффин

17

> <> , 92 94

Я это сделал!

это экзотический символ \x11с десятичным значением 17. После завершения печати программа завершает работу с ошибкой (это переполнение стека). Я должен был управлять тем, какие зеркала и команды направления я использовал осторожно, так как я могу использовать каждое из них только один раз.

   >"vCoUV␑3`h]Z_X
       /a[f+
#$%&'r(!
.0456~8?
:;<=@9l)
ABDEFcGe
HIJKL*
MNOPQ7
RSTWYd
bgijk1
mnqst-
uwxyz2
{|}  ,
     \p^

Попробуйте онлайн

Основная программа:

   >"vCoUV␑3`h]Z_X
       /a[f+
     r !
     ~ ?
     9 )
     c e
     *
     7
     d
     1
     -
     2
     ,
     \p^

Объяснение:

Нажмите строку vCoUV␑3`h]Z_X >(выполнение оберток). Двигайся вниз. Переверните стопку и удалите v.

Нажмите 9и c(12). Умножьте, чтобы получить 108( l). Нажмите 7. Нажмите d(13), вычтите 1, разделите, 2чтобы получить 6. Поместите lв (x, y) из (13,6), который находится ниже e. Я мог бы сделать это короче, но это удлиняется, поэтому у меня есть место, чтобы добавить больше символов ASCII.

Двигайтесь в петлю. Толкать длину стека с l. Если больше 14, выходной символ, в противном случае создайте новый стек с 10 верхними элементами, добавьте 15, затем отразите выполнение, затем вверх и выведите. Это используется для предотвращения лишних пробелов и >печати в конце, а также для превращения случайно выглядящей строки в то, что должно быть напечатано. Продолжайте цикл.

Если какая-либо из строк будет короче (путем удаления символа), программа больше не будет работать, либо из-за того, что вертикальные части программы больше не совпадают, либо из-за того, что строка для печати больше не является правильной. Попытка удалить символ перед каждой строкой изменит глубину стека и место lразмещения, что также вызовет проблемы.

Рыбы


94! Приятно! Я не думал, что ты
Альберт Реншоу

2
Когда я начал делать первую версию, я знал, что смогу использовать ее еще раз. Затем я избавился от "и lс совсем немного работы. Как только я ударил 92, я был уверен, что должен быть способ удалить последний o. Однако потребовалось немного усилий. Вы можете сказать по истории изменений.
mbomb007

16

Октава, 20 21 22 25 27 33

Лучшее, что мне удалось сделать, это

g=@()disp(horzcat([67 9583 -412],'e B',"nvkhmf"+!0));

Это создает анонимную функцию, fкоторая не требует ввода. Вы можете назвать это f(). Я бы сказал, что точка с запятой в конце необходима, чтобы избежать печати тела функции.

Возможно, это можно улучшить, комбинируя evalи printf, но я пробовал и терпел неудачу снова и снова.

При этом все цифры используются один раз: используется тот факт, что Octave выполняет mod(x,256)операцию при неявном преобразовании чисел в символы. Это означает, что мы можем использовать как отрицательные числа, так и числа вне нормального 32-126диапазона. Следующие номера всех результатов в письме , iкогда преобразуются в символы: ... -2455 -2199 -1943 ... 105 361 .... Вместо использования 'owling'в конце мы используем "nvkhmf"и добавляем 1. Это создает вектор целых чисел, которые неявно преобразуются в символы. Вместо этого 1мы используем !0(или not(false). Кроме того, мы используем "вместо того, 'чтобы избежать двух штрафных очков.

Нам нужно найти набор чисел, который дает самый низкий балл. Строка Code Bowlingприводит к следующей матрице, когда мы вычитаем и добавляем -10 * 256 - 10 * 256.

  -2493  -2449  -2460  -2459  -2528  -2494  -2449  -2441  -2452  -2455  -2450  -2457
  -2237  -2193  -2204  -2203  -2272  -2238  -2193  -2185  -2196  -2199  -2194  -2201
  -1981  -1937  -1948  -1947  -2016  -1982  -1937  -1929  -1940  -1943  -1938  -1945
  -1725  -1681  -1692  -1691  -1760  -1726  -1681  -1673  -1684  -1687  -1682  -1689
  -1469  -1425  -1436  -1435  -1504  -1470  -1425  -1417  -1428  -1431  -1426  -1433
  -1213  -1169  -1180  -1179  -1248  -1214  -1169  -1161  -1172  -1175  -1170  -1177
   -957   -913   -924   -923   -992   -958   -913   -905   -916   -919   -914   -921
   -701   -657   -668   -667   -736   -702   -657   -649   -660   -663   -658   -665
   -445   -401   -412   -411   -480   -446   -401   -393   -404   -407   -402   -409
   -189   -145   -156   -155   -224   -190   -145   -137   -148   -151   -146   -153
     67    111    100    101     32     66    111    119    108    105    110    103
    323    367    356    357    288    322    367    375    364    361    366    359
    579    623    612    613    544    578    623    631    620    617    622    615
    835    879    868    869    800    834    879    887    876    873    878    871
   1091   1135   1124   1125   1056   1090   1135   1143   1132   1129   1134   1127
   1347   1391   1380   1381   1312   1346   1391   1399   1388   1385   1390   1383
   1603   1647   1636   1637   1568   1602   1647   1655   1644   1641   1646   1639
   1859   1903   1892   1893   1824   1858   1903   1911   1900   1897   1902   1895
   2115   2159   2148   2149   2080   2114   2159   2167   2156   2153   2158   2151
   2371   2415   2404   2405   2336   2370   2415   2423   2412   2409   2414   2407
   2627   2671   2660   2661   2592   2626   2671   2679   2668   2665   2670   2663

Итак, ['',2627 2415 2148 1893 -2528 66 -1169 -1161 2668 105 -146 103]результаты в ans = Code Bowling. Задача состоит в том, чтобы найти набор цифр и символов, который максимально снижает оценку. Использование всех цифр, конечно, хорошо, но дубликаты - плохо. Поскольку все цифры используются, а не используются дважды, это наилучшее возможное сочетание. Также мы получаем использование -, в результате чего получаем одно очко.

Можно утверждать, что он может быть уменьшен до строки ниже (31 балл), но тогда он больше не будет «исполняемой функцией» и, следовательно, будет иметь другую функциональность.

disp(horzcat([67 9583 -412],'e B',"nvkhmf"+!0))

Ты function q();disp(...)тоже пробовал ? За исключением того i(), что они не перекрываются.
Sanchises

@ Я могу проверить это. Но cotв horzcatи nfв строке будет значительно снизить счет. Хотя может быть лучше, если я удалю horzcatи создаю строку другим способом, но тогда я не смогу использовать +!0также. Я был бы удивлен, если бы это увеличило счет, если честно ... Это всего на 7 символов длиннее, чем текущий ответ, и я получу штраф в 7 байт, в дополнение к тем, что я упомянул.
Стьюи Гриффин,

1
Да, я не мог легко получить более высокий балл function, но потом я решил, что вы, возможно, уже попробовали это, и я потратил бы впустую свое время (в отличие от, вы знаете, тратить мое время на PPCG)
Sanchises

12

QBasic, 34

Это неформатированный код (yay для нечувствительности к регистру). Вы можете запустить его в QB64 или на archive.org (хотя обратите внимание, что последний будет форматировать код по мере его ввода). Я думаю, что мне удалось соблюдать все правила.

CLS
PrINT "C
LOcatE 1, 2 : ? CHR$(957-846); "de Bowling

CLSНеобходимо: без него, Cне гарантируется для печати в верхнем левом углу экрана, где он будет выравнивают с ode Bowling. Это LOcatEнеобходимо: без него ode Bowlingбудет напечатано в строке ниже C. Я не верю, что существует какое-либо подмножество программы (кроме пробелов), которое можно удалить и сохранить тот же вывод.


1
Можете ли вы поделиться ссылкой на онлайн переводчик? Я не могу запустить это на repl.it. Я получаюParse failed: Syntax error at 3:36: Token(Bowling)
Стьюи Гриффин

1
@StewieGriffin Отредактировано в нескольких вариантах.
DLosc

1
@StewieGriffin, это использует преимущество в реализациях Microsoft Basic, где закрывающая кавычка строки является необязательной, если эта строка продолжается до конца строки. Я ожидаю, что большинство сторонних переводчиков будут возражать против пропущенных цитат.
Марка

Очевидно, у QBasic очень сильная ассоциация с запахом для меня.
Не то, чтобы Чарльз

1
@DLosc Пахнет как книга, из которой я ее выучил, и как компьютерная комната в моем доме. У меня не было идей. Это было LOCATE 1, 2то, что сделал это
не то, что Чарльз

12

С 27 29

+2 балла благодаря @ceilingcat!

f(){char q<:]="Code B\157wling";puts(q);%>

2
Предлагаю char q<:]вместо char q[]и puts(q);%>вместоputs(q);}
потолок кошка

Предложение: 1. использовать отдельные функции для вывода каждого сегмента строки и затем запускать их все в функции f 2. Волшебство использования структур, чтобы сделать код неоправданно длиннее
Мэтью Ро

1
@ MatthewRoh Я думаю, что вы можете найти, что система начисления очков наказывает это довольно сильно
Альберт Реншоу

1
@AlbertRenshaw Те орграфы
ceilingcat

15
Ха-ха, впервые я вижу+2 points thanks to ...
Kritixi Lithos

9

Haskell , оценка 21 38 46 47 21 70

putStr$toEnum(length"!#%&'*+,-./012345789;<=>?@ADGHIJKLMNOPQRTUVWXYZ[]^_`abcfjkqsvyz{|}~"):"ode B\x6Fwling"

Попробуйте онлайн! Идея состоит в том, чтобы получить преимущество C, создав строку длиной 67, которая содержит все неиспользуемые символы и преобразовав длину этой строки в символ. Я начал с putStr$toEnum(length""):"ode B\x6Fwling"( '\x6F'шестнадцатеричный, для '\111'которого дает 'o') и вычислил все печатные символы ASCII, не содержащиеся в программе:

!#%&'*+,-./012345789;<=>?@ACDGHIJKLMNOPQRTUVWXYZ[]^_`abcfjkqsvyz{|}~

Между прочим, остается ровно 67 печатных символов ASCII, которые можно вставить в строку, и Cсам по себе, которые не могут появиться в строке, потому что тогда программа будет сведена к размеру putStr"Code B\x6Fwling".


Предыдущее решение: (оценка 21)

f|x<-'C'=mapM putStr[(:)x"ode Bowling"]

Определяет функцию, fкоторая не принимает ввода и печатает строку. Попробуйте онлайн!



@ Лео, хороший улов! Этот подход также работает для моей обновленной версии 95в строке и вычитания 4621? (У меня нет времени, чтобы проверить это прямо сейчас, но я посмотрю это через некоторое время)
Laikoni

1
Гоча . Это заняло у меня больше времени, чем следовало бы, видя, как прост результат :)
Leo

8

JavaScript, 19

prompt('C\157de B\x6fwlin'+"g")

Не очень высокий балл.


z(){var x=alert('Code \nBowling');}
sagiksp

@AlbertRenshaw точка с запятой может быть удалена, хотя
только для ASCII

1
@sagiksp Не работает, functionраньше не былоf
только ASCII

1
Damnit oне использовался
только ASCII

1
19:prompt('C\157de B\x6fwlin'+"g")
Альберт Реншоу

8

Желе , 94

“!#"$&('*)+-/,13.0456:79<;>=@B?ADFHJLNCPRTEVXZ\G^IKMQ`SWbY[]d_acfhjegliknmprotquvxwy{z}¹|³⁵⁷~°⁹⁻”O%2s8UḄỌ

Попробуйте онлайн!

105 уникальных персонажей, 11 экзотиков ( “¹³⁵⁷°⁹⁻”ḄỌ).

Как?

Формирует строку из 8-битного обращенного ASCII, где каждый бит кодируется с использованием младшего разряда значения Unicode символа.

“...”O%2s8UḄỌ - Main link: no arguments
“...”         - the string enclosed            !  #  "  $  &  (  '  *  )  +  -  /  ,  1  3  .  0  4  5  6  :  7  9  <  ;  >  =  @  B  ?  A  D  F  H  J  L  N  C  P  R  T  E  V  X  Z  \  G  ^  I  K  M  Q  `  S  W  b  Y  [  ]   d  _  a  c   f   h   j   e   g   l   i   k   n   m   p   r   o   t   q   u   v   x   w   y   {   z   }   ¹   |   ³    ⁵    ⁷   ~   °    ⁹    ⁻
     O        - cast to ordinal (vectorises) [33,35,34,36,38,40,39,42,41,43,45,47,44,49,51,46,48,52,53,54,58,55,57,60,59,62,61,64,66,63,65,68,70,72,74,76,78,67,80,82,84,69,86,88,90,92,71,94,73,75,77,81,96,83,87,98,89,91,93,100,95,97,99,102,104,106,101,103,108,105,107,110,109,112,114,111,116,113,117,118,120,119,121,123,122,125,185,124,179,8309,8311,126,176,8313,8315]
      %2      - mod 2 (vectorises)           [ 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1,  0, 1, 1, 1,  0,  0,  0,  1,  1,  0,  1,  1,  0,  1,  0,  0,  1,  0,  1,  1,  0,  0,  1,  1,  1,  0,  1,  1,  0,  1,   1,   1,  0,  0,   1,   1]
        s8    - split into chunks of 8       [[1,1,0,0,0,0,1,0], [1,1,1,1,0,1,1,0], [0,0,1,0,0,1,1,0], [1,0,1,0,0,1,1,0], [0,0,0,0,0,1,0,0], [0,1,0,0,0,0,1,0], [1,1,1,1,0,1,1,0], [1,1,1,0,1,1,1,0], [0,0,1,1,0,1,1,0], [1,0,0,1,0,1,1,0], [0,1,1,1,0,1,1,0], [1,1,1,0,0,1,1]]
          U   - upend (vectorises)           [[0,1,0,0,0,0,1,1], [0,1,1,0,1,1,1,1], [0,1,1,0,0,1,0,0], [0,1,1,0,0,1,0,1], [0,0,1,0,0,0,0,0], [0,1,0,0,0,0,1,0], [0,1,1,0,1,1,1,1], [0,1,1,1,0,1,1,1], [0,1,1,0,1,1,0,0], [0,1,1,0,1,0,0,1], [0,1,1,0,1,1,1,0], [1,1,0,0,1,1,1]]
           Ḅ  - binary to int (vectorises)   [67, 111, 100, 101, 32, 66, 111, 119, 108, 105, 110, 103]
            Ọ - to character (vectorises)    ['C', 'o', 'd', 'e', ' ', 'B', 'o', 'w', 'l', 'i', 'n', 'g']
              - implicit print               Code Bowling

1
Желе длиннее других, как это возможно?
Кристофер

1
@DownChristopher Это на самом деле короче, чем ответ Python. Ответ Python имеет повторение, хотя.
fəˈnɛtɪk

@ DownChristopher я могу обнаружить сарказм?
Джонатан Аллан

@JonathanAllan нет Да, я все еще нахожу забавным, что желе здесь довольно длинное
Кристофер,

6

Рёда , 33

{["ode B\x6fwling"]|push chr(3*4+57-2).._}

Попробуйте онлайн!

Я пытался следовать всем правилам. Это работает, сначала выталкивая строку ode Bowling!в поток, а затем вставляя C= 3 * 4 + 57-2 вперед.


6

Кардинал 20

23 непробельных символа
% #> / NI "CodeB8 ^ o) wl, ing

-3 за повторное "о"

   I
 >\/N
%# "CodeB
 8^o
 ) w
   l
 , i
   n
   g

Указатель пути:

Шаг 1:
указатель создан на%, идет вправо

Шаг 2:
Указатель разделяется на #, чтобы идти вверх, вправо и вниз (P1, P2, P3)

Шаг 3 :
P1 Посылается направо>
P2 Идет направо
P3 Установите ожидание 3 шага на 8

Шаг 4:
P1 Отражено вниз \. \ изменен на /
P2 Установите режим печати с помощью "
P3 Подождите 2 галочки в 8

Шаг 5:
P1 направляется вниз
P2 Распечатать C
P3 Дождаться 1 отметки в 8

Шаг 6:
P1 отправлено ^
P2 Печать o
P3 Завершить ожидание при продолжении, взять значение ASCII "" (32) из)

Шаг 7: P1 направляется вверх
P2 Print d
P3 направляется вниз

Шаг 8: P1 Отражено вправо на \, который был изменен на /
P2 Печать e
P3 Печать символа со значением ASCII = 32 от, операция

Шаг 9:
P1 Отраженный вверх /, который изменяется на \
P2 Печать B
P3 Достигнут конец поля и остановок

Шаг 10:
P1 Отражено вниз I
P2 Достигнут конец поля и остановок

Шаг 11:
P1 Отражено вправо /, которое было изменено на \. Изменения обратно на /

Шаг 12:
P1 Отражено слева от N

Шаг 13:
P1 Отражено вниз /

Шаг 14:
P1 установить в режим печати с помощью "

Шаг 15:
Печать P1 o

Шаг 16:
печать P1 w

Шаг 17:
P1 Печать l

Шаг 18:
P1 Распечатать я

Шаг 19:
P1 Распечатать n

Шаг 20:
Печать P1 g

Шаг 21:
P1 Достигает конца поля и останавливается.

Попробуйте онлайн


5

С 73

Спасибо @Laikoni!

F(){printf("Code B\157wli%cg",48+strlen("!#$&'*-../2369:<=>?@ADEGHIJKLMNOPQRSTUVWXYZ[]^_`abhjkmquvxyz|~"));}

Попробуйте онлайн!

С  31   33  35

F(){printf("Code B\157wli%cg",96|0xD+3*4/8);}

Спасибо @ceilingcat и @DLosc за еще два очка, и спасибо @ Örjan Johansen за еще два очка!

Попробуйте онлайн!


1
@ceilingcat Тогда можно было бы удалить 8-и иметь действующий код еще. 0xA-4+8должно работать, хотя.
DLosc

1
Будет 0xA+32/8работать? (
Орджан Йохансен

@ ØrjanJohansen Я думаю, что так и есть. Ни один из +32, +3, +2, +3/8, +2/8, /8или +8производит правильный вывод. Спасибо!
Steadybox

О, или 0xD+4*8/32. Нет, подождите, это сократилось 0xD+4/3бы, не так ли.
Орджан Йохансен

1
Использование того же подхода, что и в моем ответе на Haskell, дает 74 балла, если это никак не сводится: попробуйте онлайн!
Лайкони

3

Пакет, 19 символов

@echO(Cod%TMP:~5,1% Bowling

Начиная с Windows Vista, TMPначинается с C:\Users\и, следовательно, %TMP:~5,1%является многословным способом записи e, несмотря на требование двойного %штрафа при -4.


3

Brainfuck: -204

++++[++++>---<]>.+[--->+<]>+++.-----------.+.--[--->+<]>-.+[->++<]>.-[--->+<]>++++.++++++++.-----------.---.+++++.-------.

Ну, оценка ужасная, но писать было весело.

  • 122 символа
  • повторный выпуск: -0 ()
  • повторная пунктуация: -134 (- [---]. ----------- ..-- [---] -. [-] .- [---] ..-- ---------. --- ..-------.)
  • повторяется другое: -192 (+++++++> +> + <> ++++> + <> +> ++ <>> + <> +++++++++++++ ++++)
  • пробельные символы: -0 ()
  • экзотические персонажи: -0 ()

Brainfuck выигрывает какие-либо соревнования PPCG? ; P
Draco18s

@ Draco18s, наверное, не хахаха плакать.
Гайдн Диас

1
«Забавно писать», вы хотите напечатать «Code Bowling» в текстовом генераторе ?
Джо Кинг

3

Ява 8, 2 3 5 13 17 18 19 20 21 24 77 78 баллов

+53 баллов (24 → 77) благодаря @Laikoni .

v->(char)"!#$%&'*,/0234689:;<=?@ADEFGHIJKLMNOPQRSTUVWXYZ[]^_`bfjkmpqsuxyz{|}~".length()+"\157de Bowling"

Длина 104 символа
- повторяющиеся символы: -15 ( helng)
- повторяющиеся знаки препинания: -10 ( "()"")
- повторяющиеся другие ASCII: нет
- пробельные символы: -1
SCORE: 78

Попробуйте онлайн.


Старый 24-байтовый ответ:

v->"C\157de Bowlin"+(char)103;


Длина 30 символов - повторяющиеся alnum: -3 ( 1)
- повторная пунктуация: -2 ( ")
- повторяющиеся другие ASCII: нет
- пробельные символы: -1
SCORE: 24

Попробуйте онлайн.


Использование восьмеричного экранирования в тексте увеличит ваш счет на 6 вместо 2, которые вы получите за свой выход из Юникода (хотя и то и другое хуже). Кроме того, конкатенация первого или последнего символа увеличит ваш счет на 1. Наконец, подумайте, что вам лучше использовать лямбду, а не именованную функцию.
Нил

@Neil Странно, я уже придумал Object x(){return"C\157de Bowling";}несколько часов назад за 17 баллов .. Видимо, я не редактировал / не сохранял его в своем представлении, хотя ..: S Что касается лямбды, я использую Java 7, который не есть еще лямбды. Я мог бы добавить ответ Java 8 с лямбда, хотя.
Кевин Круйссен

Ой, простите, я не заметил 7. (Но не забывайте, конкатенация.)
Нил

1
Использование того же подхода, что и мой ответ на Haskell, дает эту версию со счетом 77: попробуйте онлайн! ,
Лайкони

@Laikoni Спасибо! +53 оценка благодаря вам. И так как Java 8 ответов обычно отвечал без задней запятой, я мог бы удалить эту заднюю точку с запятой и заменить повторен ,,с ,;еще +1. Забавно, что String, использующий все доступные для печати ASCII, которые остались, составляет ровно 97 символов для char-кода C. :)
Кевин Круйссен

2

сложено , 42

(67:43,1 ab)2 9*pf sum 8/0\|>+chr'de Bowling',EPS#`

Попробуйте онлайн!

Оставляет вывод в стеке. Вот разбивка:

length: 51
repeated alnum:        -0 ()
repeated punct:        -4 (',)
repeated other:        -0 ()
whitespace characters: -5 (     )
exotic characters:     -0 ()
total score: 42

Я мог бы, вероятно, сделать это выше, но это в 42 Су ....

Еще один претендент, 40

(67:43,sum)9 pf 2%MIN 0\|>+chr'de Bowling',EPS#`

Я использовал этот скрипт для оценки.


2

зло , -81

Лучше, чем Brainfuck!

aeeaeuwkaaeeuwygaeaeclaaxjlwalusbdgueuewguwpweewpuuuwuuuwpuweew

объяснение

aeeaeuw //Write 'C'
k       //Set P[0] to 'C'
aaeeuw  //Write 'O'
y       //Set W[0] to 'O'
gaeae   //Set Accumulator to 'D'
claa    //Create new Wheel cell at index 0, swap with Accumulator, add 2
xj      //Set alternate marker mode and drop marker
lwa     //Write value of W[0], add 1
lu      //Put it back, subtract 1 from Accumulator
sb      //Go to 'j' if Accumulator != 0
d       //Delete W[0]
        //The above loop writes 'D' and 'E'
gueuew  //Write ' '
guw     //Write 'B'
pw      //Write 'o'
eew     //Write 'w'
puuuw   //Write 'l'
uuuw    //Write 'i'
puw     //Write 'n'
eew     //Write 'g'

Подано, потому что никто ничего не делает во зле, но это забавно.

Гол:

Длина = 63

a*8  = -24
e*12 = -36
g*2  = -6
l*2  = -6
p*2  = -6
u*12  = -36
w*10  = -30

Попробуйте онлайн!

РЕДАКТИРОВАТЬ: TiO, кажется, неправильно обрабатывает создание и удаление новых ячеек колеса - я подал отчет об ошибке на эту тему. Там он не будет работать должным образом, но я запустил его на моем собственном переводчике, и он работает, и вы можете мне доверять, чтобы я не беспокоился об этом;)


2

Perl: 29 , 33

$_=OWLING;printf%s,"C\157de".chr(30+8/4).B.lc

Гол:

- 46 characters long
- repeated alnum:       -6 (rc)
- repeated punctuation: -6 ("..)
- repeated other:       -0 ()
- whitespace characters:  -1 (
)
- exotic characters:  -0 ()

Total score: 33

2

05AB1E , 94 балла

”X1234bcde5fghijk68l9<mn>,o.p|q\/{})r(_-+s=tu*vwxyzAB&YDEFG^HI%$ZK#L@!MNO~PQR`ST':UVW[0];"”€a7ôJCç€?

Попробуйте онлайн!


- 100 characters long
- repeated alnum:       -0 ()
- repeated punctuation: -0 ()
- repeated other:       -0 ()
- whitespace characters:  -0 ()
- exotic characters:  -6 (””€ôç€)

Total score: 94

В основном конвертирует (Двоичный ASCII Code Bowling):

['1000011', '1101111', '1100100', '1100101', '0100000', '1000010', '1101111', '1110111', '1101100', '1101001', '1101110', '1100111']

В строку из 1 и 0 затем каждая 1 заменяется буквой в алфавите, а каждая 0 - пробелом, символом или цифрой.

”X1234bcde5fghijk68l9<mn>,o.p|q\/{})r(_-+s=tu*vwxyzAB&YDEFG^HI%$ZK#L@!MNO~PQR`ST':UVW[0];"”

Строка, где 1 - это буквы, а 0 - это символы, цифры или что-то еще. Затем мы выполняем итерацию по алфавиту, нажимая 1 для алфавитного 0 и не алфавитного. Затем мы разбиваемся на группы по 7, конвертируем обратно в ASCII и печатаем каждый символ.


2

T-SQL, 65 18 32! точки

PRINT char(78-9605*43%12) + 'ode Bowling'

Вдохновленный уловкой в ответе Dlosc's QBasic , я нашел способ включить все 10 цифр и большинство математических операторов ( %это остаток / по модулю, только отсутствует /), в основном методом проб и ошибок. Я не думаю, что есть какой-либо способ получить 67, удалив любую комбинацию цифр / символов, но вы можете попробовать.

Версия 2 (18 баллов, тривиально):

DECLARE @ char(12)='Code Bowling'PRINT @

Не очень хорошая оценка, но это то, что моя первая версия упростила (спасибо, MickyT). Все остальное, что я пробовал (кодирование и декодирование hex64, выделение отдельных элементов из строки, преобразование значений ASCII и т. Д.), Содержало слишком много повторяющихся символов (особенно ECRсимволов (),@), которые приводили к отрицательным значениям.

Версия 1 (65 баллов, недействительно):

DECLARE @ char(123)=
'Code Bowling FGHJKMOQSUVWXYZbjkmpqsuvxyz045789 [!?.-":;]{`~#$%^&*_+|\><}'
PRINT left(@,LEN(@)/6)

Я использовал длину строки, чтобы определить, сколько символов я использую с левой стороны, поэтому удаление любого отдельного символа из строки приведет к уменьшению результата целочисленного деления до 11, выводя только Code Bowlin.


Не уверен, но я думаю, что это может быть уменьшено в DECLARE @ char(12)='Code Bowling'PRINT @соответствии с правилами.
MickyT

@ MickyT Может, это лишает законной силы мой ответ? Кто-то в чате сказал, что он должен был выдерживать удаление только случайных символов, а не длинных произвольных частей, они были неправильными?
BradC

Я бы оставил это здесь на мгновение. Всегда приятно видеть ответ t-SQL
MickyT

@MickyT Я оставлю это, но вычеркну счет. Лучшее, что я мог сделать в противном случае - жалкие 18 очков: P
BradC

2

; # , оценка -1163, неконкурентоспособен

Я не думаю, что это будет большая конкуренция, даже если бы она могла конкурировать.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#

Попробуйте онлайн! Примечание: TIO не имеет; только # интерпретатор; # +.


1

CJam , оценка 47

"'#?GyQ2wE(s6&␟JI!gF$u*Aq;0p4BvOKkHLhM"3/{:i~-z+c}%

Надеюсь, нет проблем с этим ...

Использует один экзотический символ (Разделитель единиц, ASCII 31, представленный как ), и один повторяющийся символ ( "). Я думаю, что это можно сделать еще дольше, но я пока оставлю все как есть.

Попробуйте онлайн!

Программа работает, беря эту длинную строку и разбивая ее на подстроки длиной 3. Затем каждая подстрока сопоставляется с блоком, который преобразует свои символы в их значения ASCII, сбрасывает значения в стек, берет абсолютную разницу вторых двух, добавляет результат с первым, затем преобразует окончательный результат обратно в ASCII характер.


1

CJam, оценка 93

"g!#$&'()n*+/0134i5689:;<l=>?@ADEwFGHIJKLoMNOPQRSBTUVWXYZ [\]^_`aebcfhjkmdqrstuvxpyz{|}  C"7~%2,.-

Попробуйте онлайн

Вдохновленный ответом TidB's Python .
Не уверен, есть ли способ избежать повторения двойных кавычек.

Объяснение:

Строка содержит «Cpde Bowling» в обратном порядке, каждый 8-й символ.
7~%извлекает "Cpde Bowling" ( 7~= -8)
2,.-уменьшает символ p ( 2,= [0 1])


@ Laikoni, если вы имели в виду, что я нарушил правило неиспользуемого кода, это должно быть исправлено сейчас
aditsu

@Laikoni да, но если вы удалите какой-либо один символ в его коде, он не будет работать должным образом, поэтому, поскольку весь код используется, он действителен.
Волшебная Урна Осьминога

@carusocomputing В правилах четко указано, что код не должен работать «если какой-либо отдельный символ (или различные наборы символов) удалены / удалены», поэтому я не думаю, что ваша интерпретация верна. Во всяком случае, aditsu уже решил проблему, так что теперь все в порядке.
Лайкони

1

PHP, 33 балла

Это было довольно сложно придумать.

Оценка может быть улучшена в будущем.

<?echo IHASZODECG9F^"
'%6z\r+2/.W!";

Предполагается, что новая строка является новой строкой в ​​стиле Linux! Стиль Windows и Old-Mac не будут работать должным образом.


1

Руби, 75

Примерно порт ответа Python, но в Ruby нет такой классной пошаговой функции, поэтому я использую gsubвместо этого. Также я решил немного повеселиться с экзотическими персонажами, бросая фразы в Google Translate

Попробуйте онлайн!

print"Cachjkmq\x6fvyzADEFdGHIJKLMeNOPQRST UVWXYZ0B234589[o!?-:;]`w~@\#$%^&l*_+=|><i コードゴルフn 代碼保齡球 gκωδικός".gsub /(.).{7}/,'\1'

1

USML, 12 или 9 баллов (не конкурирует)

"Code\tBowling'

Попробуйте онлайн!

Этот ответ немного обманывает, злоупотребляя отображением HTML. Строка, фактически созданная этим, является "Code\tBowling ". Очки теряются за повторение символа «о».

Для нечестного ответа:

"Code Bowling

USML все еще находится на ранней стадии разработки и еще не способен еще больше увеличить размер программы.


« USML все еще находится на ранней стадии разработки и пока не способен еще больше увеличить размер программы ». Как насчет этого на 10 баллов "Code&'Bowling(* Примечание: заменить &на разрыв строки, это не позволит мне набирать их в комментариях)
Альберт Реншоу

Вы также можете добавить обратную косую черту `` перед любой из букв, и она будет по-прежнему выводить ту же строку, так как компилятор либо игнорирует ее, либо экранирует символ в себя. Это получает (конкурирующий) счет до 11 сейчас!
Альберт Реншоу

Затем вы можете добавить разрыв строки и нижний регистр sк следующей строке (получая подстроку ничего, тем самым не меняя вывод), чтобы получить ваш конкурирующий балл до 12, такой же, как ваш неконкурентный балл, кроме фактического действительное представление: D
Альберт Реншоу

Фактически, вот ответ из 16 пунктов в USML, я опубликую его хастин, так как в комментариях сложно набрать многострочный код: hastebin.com/icuguviyax.tex
Альберт Реншоу,

Я идиот и забыл правила для моего собственного вызова. LOL, часть кода выше все равно выполнит вызов, дисквалифицируя мой ответ; упс!
Альберт Реншоу

1

Cubix , 85

Codeha1spqumtr;$"gnilwoB"Sv"ADEFH%IJK2f!OPUzQ0V3XY&*[-|L:]\T`~#x>MR56cGk'?W<()b4j}.{Z_^/978@

Попробуйте онлайн!

Кубифицированные с незначительными символами заменены на.

        C o d e
        . . . .
        . . u . 
        . . ; . 
" g n i l w o B " S v " . . . .
. . . . . . . ! . . U . . . . .
. . . . . . . L . . \ . . . . .
> . R . . . . . . . W < . . . .
        . . . {
        . . ^ /
        . . . @
        . . . .

Я думаю, что я сделал путь достаточно хрупким, так что удаление персонажей сломает его довольно сильно.

Смотреть это беги

- 92 characters long
- repeated alnum:       -3 (o)
- repeated punctuation: -4 ("")
- repeated other:       -0 ()
- whitespace characters:  -0 ()
- exotic characters:  -0 ()

Total score: 85

0

VB.net, 68

cONSOLE.WRITE("Code BowlingADEFGHJKQUVXYZfhjkmpqyz`!@#$%^&*9876543~][{}\|';:<>?+=-_".subStrinG(0,12))

Быстрый тест, основанный на нечувствительности к регистру VB и отсутствии необходимости в «системе».


1
Я не знаю VB.net, но нельзя ли это уменьшить cONSOLE.WRITE("Code Bowling")?
Лайкони

1
Да, это возможно. По сообщению: весь код должен быть использован. Это означает, что программа не всегда может правильно выполнить задачу, если какой-либо отдельный символ (или различные наборы символов) удалены. Естественно, подмножество программы не должно быть в состоянии выполнить задачу самостоятельно без остальной части программы. «Счет должен быть 17, я считаю.
charliefox2

@ charliefox2 Спасибо. Я этого не читал - наверное, был слишком взволнован, чтобы снова использовать VB!
chrixbittinx

1
Эй, 17 все еще сокрушает мой счет -81!
charliefox2

0

Shell: оценка 17

#!/bin/bash
echo "CODE BoWLING" | tr D-X d-x
  • 44 символа
  • повторный выпуск: -12 (в год)
  • повторная пунктуация: -4 ("-)
  • повторил другое: -4 (/)
  • пробельные символы: -7 ()
  • экзотические персонажи: -0 ()

Общий балл: 17


0

Точность !! 171 символ

119
Write _-52
Write _-8
Count i while i-2 {
	Write _-19+i
}
32
Write _
_+34
Write _
_+45
Write _
_+8
Write _
_-11
Write _
Count i while i-2 {
	Write 105+i*5
}
_-5
Write _

Попробуйте онлайн!

Acc !! хорошо подходит для этой задачи, так как пробелы необходимы и циклы являются дорогостоящими. Я использовал в Acc umulator здесь, но плохо, чтобы увеличить чарсы. Вот краткий обзор со страницы:

AccumulatorЛюбое выражение, стоящее само по себе, оценивается и присваивается аккумулятору (который доступен как _). Таким образом, например, 3 является оператором, который устанавливает аккумулятор в 3; _ + 1 увеличивает значение аккумулятора; и _ * N читает символ и умножает аккумулятор на его код. (N получает вход)

Write <charcode> Выводит один символ с заданным значением ASCII / Unicode в стандартный вывод. Код может быть любым выражением.

Петли в Acc, по крайней мере, для игры в гольф, являются болью. Они требуют фигурных скобок, и все пробелы необходимы. В противном случае это довольно очевидно.


Это вызов для боулинга, а не для игры в гольф, так что вы должны максимально увеличить счет. Кроме того, его выигрыш в остальном необычен. Используя приведенный выше инструмент оценки, ваш код получает отрицательную оценку.
Орджан Йохансен

1
@ ØrjanJohansen Он делает вид , как будто они пытаются максимизировать счет (из - за «я использовал в Acc umulator здесь, но плохо, чтобы увеличить символы»), но они просто не забили его правильно.
LyricLy

@ ØrjanJohansen Ах да, кажется, я полностью пропустил раздел оценки. Я буду обновлять
FantaC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.