Виведіть текст "Код-боулінг"


54

Код-боулінг

Вас Бренсвік Боулінг найняв, щоб створити просту програму для виведення тексту Code Bowlingна їх моніторах. Ця компанія коштує досить копійки, і ви відчуваєте, що можете їх ошукати за зовсім трохи грошей.

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

Дістаньте свої скарбнички, давайте код!


Виклик

Завдання полягає в тому, щоб просто вивести текст Code Bowling, точно так, як написано тут, з максимально можливим балом. (Дивіться розділ: Система підрахунків балів нижче)

Провідні та кінцеві нові рядки (перерви рядків) прийнятні.

Ваш код може бути цілою програмою або просто виконуваною функцією.


Правила

Обов’язковий: у цьому виклику використовується використання Code-Bowling: Загальні правила, редакція 1.0.0 ; Детальніше див. У Meta.

  1. Характер: Коефіцієнт байт
    У кодовому боулінгу кількість символів віддається перевазі перед числом байтів. Очевидною причиною цього є те, що багатобайтові символи unicode (наприклад, 🁴) можуть використовуватися замість однобайтових символів unicode, щоб розгорнути кількість байтів, і зробить боулінг більше про те, хто перейменовує більшість змінних з високобайтовими символами unicode ніж хто найбільш стратегічно створює змістовно складний код.

  2. Імена змінних / функцій / об'єктів
    Усі імена змінних (або вказівники об'єктів, назви функцій тощо) повинні бути довжиною 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к. Якби це найнижчий бал, я б робив дивовижно.
Атако

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

48

Пітон 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)
Санчіз

12

QBasic, 34

Це неформатний код (так, на нечутливість до випадків). Ви можете запустити його в 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, де кінцева цитата рядка є необов'язковою, якщо ця рядок поширюється на кінець рядка. Я сподіваюся, що більшість неперекладачів Microsoft заперечують проти відсутніх цитат.
Марк

Мабуть, 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);}
roofcat

Пропозиція: 1.використовуючи окремі функції для виведення кожного сегмента рядка, а потім запускає їх усі у функції f 2. Магія використання структур для необґрунтованого збільшення коду
Matthew Roh

1
@MatthewRoh Я думаю, що ви можете знайти систему підрахунків, що карає досить жорстоко
Альберт Реншо

1
@AlbertRenshaw Ті диграфів
ceilingcat

14
Ха-ха, вперше я бачу+2 points thanks to ...
Крітіксі Літос

9

Хаскелл , оцінка 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яка не вводить даних і друкує рядок. Спробуйте в Інтернеті!



@Leo приємний улов! Чи працює цей підхід і для моєї оновленої версії з 95рядком і відніманням 4621? (Я не маю часу перевірити це зараз, але
розберуся

1
Готча . Взяв мене довше, ніж повинен був, побачивши, наскільки простий результат :)
Лев,


8

Желе , 94

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

Спробуйте в Інтернеті!

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

Як?

Формує рядок з 8-бітного зворотного ASCII, де кожен біт кодується за допомогою LSB значення символу 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. Відповідь пітона, хоча, має повторення.
fəˈnɛtɪk

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

@JonathanAllan ні Так, мені все одно смішно, що желе тут досить довге
Крістофер

6

Röda , 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 для повторного "o"

   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 Друк d
P3 Заголовок вниз

Крок 8: Р1 відбито право на \, яке було змінено на /
P2 Друк e
P3 Друк символу зі значенням ASCII = 32 від, операція

Крок 9:
Відбиття P1 від /, яке змінюється на \
P2 Друк B
P3 Досягнуте кінець поля та зупинки

Крок 10:
P1 Відбитий I I
P2 Досягнув кінця поля та зупинки

Крок 11:
Р1 відбито право /, яке було змінено на \. Зміни назад до /

Крок 12:
P1 Відбито ліворуч від N

Крок 13:
Відбиття P1 від /

Крок 14:
P1 Встановіть режим друку на "

Крок 15:
P1 Друк o

Крок 16:
P1 Друк w

Крок 17:
P1 Друк l

Крок 18:
P1 Друк i

Крок 19:
P1 Друк n

Крок 20:
P1 Друк g

Крок 21:
P1 Досягає кінця поля та зупинки.

Спробуйте в Інтернеті


5

C, 73

Дякуємо @Laikoni!

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

Спробуйте в Інтернеті!

C,  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працювати? (Без того, щоб щось було знімним, тобто)
Ørjan Johansen

@ ØrjanJohansen Я думаю, що це так. Жоден з +32, +3, +2, +3/8, +2/8, /8або +8виробляє правильний висновок. Дякую!
Steadybox

О, або 0xD+4*8/32. Не чекайте, це скоротиться до 0xD+4/3цього.
Ørjan Johansen

1
Використовуючи той самий підхід, що і моя відповідь Haskell, дає бал 74, якщо це ні в якому разі не можна зменшити: Спробуйте це в Інтернеті!
Лайконі

3

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

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

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


3

Брейнфук: -204

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

Ну, жахливий бал, але писати було весело.

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

Чи виграє Brainfuck будь- який виклик PPCG? ; P
Draco18s

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

1
"Весело писати", ви маєте на увазі ввести "Код-боулінг" в текстовий генератор ?
Джо Кінг

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 символів
- повторний alnum: -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, який ви отримаєте за втечу Unicode (хоча обидва є гіршими). Крім того, об'єднання першого або останнього символу збільшить ваш рахунок на 1. Нарешті, подумайте, що вам може бути краще з лямбда, а не з іменованою функцією.
Ніл

@Neil Weird, я вже придумав Object x(){return"C\157de Bowling";}кілька годин тому за 17 пунктів .. Мабуть, я не редагував / не зберігав це в моїх поданнях, однак ..: S Що стосується лямбда, я використовую Java 7, яка не є ще лямбда. Я можу додати відповідь Java 8 за допомогою лямбда.
Kevin Cruijssen

Ну, вибачте, я цього не помітив 7. (Але не забудьте конкатенацію.)
Ніл

1
Використовуючи той самий підхід, що і моя відповідь Haskell, дає цю версію з оцінкою 77: Спробуйте в Інтернеті! .
Лайконі

@Laikoni Дякую! +53 балів завдяки вам. І так як Java 8 відповідей зазвичай відповідав без задньої коми, я міг би видалити цю задню точку з коми і замінити повторений ,,з ,;ще +1. Смішно, як String з використанням усіх доступних для друку ASCII, що залишилися, - це ТОЧНО 97 символів для char-коду C. :)
Kevin Cruijssen

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

Спробуйте в Інтернеті!

EDIT: TiO, здається, неправильно обробляє створення та видалення нових комірок Wheel - я подав звіт про помилку з цього питання. Там це не буде працювати належним чином, але я запустив це на власного перекладача, і він працює, і ви можете мені довіряти, щоб я не переживав про це;)


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 кодового боулінгу):

['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'

Натхненний хитрістю у відповіді 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 Це може, чи це визнає недійсною мою відповідь? Хтось у чаті сказав, що потрібно лише протистояти видаленню одиночних випадкових символів, а не довгих довільних частин, чи вони були невірними?
БредК

Я залишаю це на мить, завжди добре бачити відповідь 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,.-

Спробуйте в Інтернеті

Натхненний відповіддю Python від TidB .
Не впевнений, чи є спосіб уникнути повторення подвійних цитат.

Пояснення:

Рядок містить "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
Альберт Реншо

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

Я ідіот і забув правила мого власного виклику, хай, підмножина вищезазначеного коду все ще завершить виклик, дискваліфікуючи мою відповідь; ой!
Альберт Реншо

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

Оболонка: оцінка 17

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

Загальна оцінка: 17


0

Acc !! , 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 , але погано, щоб збільшити символи. Ось короткий огляд зі сторінки:

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

Write <charcode> Виводить один символ із заданим значенням ASCII / Unicode для stdout. Шаркодом може бути будь-який вираз.

Петлі в Acc, принаймні для гольфу, - це біль. Вони вимагають брекетів, і весь пробіл необхідний. Інакше це досить зрозуміло.


Це боулінг, а не гольф, тому ви повинні максимально оцінювати. Крім того, його оцінка є інакше незвичною. Використовуючи вищезазначений інструмент, ваш код отримує негативну оцінку.
Ørjan Johansen

1
@ ØrjanJohansen Це виглядає так, ніби вони намагаються досягти максимальної оцінки (завдяки "я тут скористався іммулятором Acc , але погано, щоб збільшити символи"), але вони просто не заробляють його правильно.
LyricLy

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