Цікавий випадок Стіва Баллмера


46

Стів Баллмер - екс-генеральний директор Microsoft, і в останній статті заявив, що "досі не знає, що зробив не так з мобільним".

Як вказував бюлетень CodeProject , "заголовок цієї статті міг закінчитися в багатьох місцях і все ще бути точним".

Якщо немає введення, виведіть наступне:

Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.

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

Це тому виграє найменше байтів на кожній мові


59
Коли я побачив заголовок / теги, я подумав, що вихід будеdevelopers developers ...
Rod

15
tcl, 25 - while 1 {puts developers}- demo
sergiol

8
braingolf, 23 - 1"developers "[!@11 1>]: P
Skidsdev

16
І я подумав про
Ballk

5
так, 14 -yes developers
сергіол

Відповіді:



17

Haskell, 96 байт

(++".\n")=<<scanl(++)"Steve Ballmer still does not know"[" what he did"," wrong"," with mobile"]

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

scanlце як foldl(або зменшення, як його називають іншими мовами), за винятком того, що він повертає список всіх проміжних результатів замість лише остаточного. До кожного проміжного результату додається, ".\n"і всі вони об'єднуються в один рядок.


17

05AB1E , 50 49 45 44 байт

4 байти, збережені натхненням від відповіді Java на Кевіна

„€Ž†©'–Ñ…€À€½ƒ§“mer„â‚à€–ƒ€“”™¸ïß”[Žì'.«=¨ð«

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

Пояснення

„€Ž†©                                         # push "with mobile"
     '–Ñ                                      # push "wrong"
        …€À€½ƒ§                               # push "what he did"
               “mer„â‚à€–ƒ€“                  # push "mer still does not know"
                            ”™¸ïß”            # push "Steve Ball"
                                  [Ž          # loop until stack is empty
                                    ì         # prepend the top string to the 2nd top string
                                     '.«      # append a dot
                                        =     # print without popping
                                         ¨    # remove the dot
                                          ð«  # append a space

О, приємно, вдалося використати стиснення словника для всього, але Ballmer?
Skidsdev

@Mayube: Так. Я частково отримав це (бал), щоб зберегти байт, реструктурувавши початковий рядок :)
Emigna

зараз виглядає набагато краще, якби тільки ти міг це стиснутиmer
Skidsdev

@Mayube: Я міг би приховати це стисканням, meале, на жаль, це не врятує жодних байтів: /
Emigna

2
@StigHemmer: Це 44 байти на кодовій сторінці
05AB1E

15

Сітківка , 82 75 байт

Завдяки Нілу за збереження 7 байт.

Кількість байтів передбачає кодування ISO 8859-1.


Steve Ballmer still does not know what he did wrong with mobile.
 w
.¶$`$&

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

Пояснення


Steve Ballmer still does not know what he did wrong with mobile.

Ініціалізуйте робочий рядок до повного заголовка.

 w
.¶$`$&

Як вказував Ніл, всі три усічення складаються перед словом, що починається з w, і інших слів, починаючи з цього, немає w. Отже, ми підбираємо пробіл, за яким слід a, wщоб знайти точки усікання. У цих пунктах ми вставляємо наступне:

  • , проміжок часу та рядок, щоб урізати речення та почати нове.
  • $`, весь рядок перед збігом, так що наступне речення починається з початку.
  • $&, пробіл і wзнову, щоб вони також були частиною наступного речення.

Нам не потрібно mobileчітко відповідати, тому що це просто те, що залишиться в третьому матчі.


3
Вам потрібно лише відповідати <space> w та замінити на .¶$`$&.
Ніл

@Neil О, це дуже акуратно, дякую. :)
Мартін Ендер


8

/// , 88 байт

8 байт, збережених @MartinEnder!

/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong/1.
2.
3.
3 with mobile.

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


1
Ви можете зекономити трохи більше, перемістивши попередній префікс у кожну заміну: tio.run/…
Martin Ender,

@MartinEnder Це особливо розумно. Дякую!
steenbergh

1
О, і ще 5, скинувши 4взагалі: tio.run/##DcLRDcMgDAXA/…
Мартін Ендер

5
@MartinEnder "Так, у мене буде номер 3 з мобільним, будь ласка".
steenbergh

7

05AB1E , 46 байт

”™¸ïßme”“r„â‚à€–ƒ€“«…€À€½ƒ§'–Ñ„€Ž†©).pvyðý'.«»

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


Це мій підрахунок - 98 байт.
Стиг Хеммер

@StigHemmer 05AB1E використовує власну кодову сторінку з 256 байтами, яка кодує кожного символу в один байт. Звідси 46 байт, навіть якщо це набагато більше байтів у базовому кодуванні UTF-8.
Кевін Кройсейсен

7

Java 8, 127 126 байт

()->{String t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile.";}

-1 байт завдяки @KonstantinCh .

Спробуйте тут.


1
Сподіваюся, ви не заперечуєте, що я вкрав вашу ідею, це набагато краще, ніж мій підхід до петлі.
TheLethalCoder

@TheLethalCoder Немає жодних проблем, оскільки я бачу, що ти мені приписуєш. :) Дорога, stringне може бути varу твоєму C # лямбда?
Кевін Кройсейсен

Ні, тому що я оголошую кілька разів одночасно.
TheLethalCoder

@TheLethalCoder Ну, звичайно, погано .. І ()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};, на жаль, на три байти довше.
Кевін Кройсейсен

1
Костянтин Ч пропонує змінити "+dкінець в кінці, ."щоб зберегти байт, оскільки остаточне передавання рядків не є обов'язковим.
Мартін Ендер


6

Желе , 52 46 байт

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»;\p”.Y

Кредити за ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓперехід до @EriktheOutgolfer, який використав це у своїй відповіді .

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

Як це працює

Левову частку роботи виконує стиснення словника Джеллі тут.

ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ

кодує

Steve| Ball|mer| still| do|es| no|t| know

є |вказує кордону між словами , що коли вибирається зі словника і рядки , які були зашифровані посимвольний ( mer, esі t).

Так само £Ṿ⁴'Þḣ~ẉкодує  what| he| did(на диво, heщо не походить зі словника), ¥Ị)кодує  wrongі Ṡ8gÐ/кодує  with| mobile.

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»

таким чином, виходить рядковий масив

“Steve Ballmer still does not know“ what he did“ wrong“ with mobile”

;\ кумулятивно зменшує конкатенацію, будуючи фрази на кожному рядку.

Нарешті, p”.обчислює декартовий добуток цих словосполучень і крапкового символу та Yвідокремлює отримані речення за допомогою рядків.


По моєму рахунку це 97 байт.
Стиг Хеммер

@StigHemmer В UTF-8 це було б. Однак Jelly також підтримує цей однобайтовий набір символів .
Денніс

6

JavaScript (ES6), 102 байти

_=>(s="Steve Ballmer still does not know")+`.
${s+=" what he did"}.
${s+=" wrong"}.
${s} with mobile.`

Спробуй це

o.innerText=(
_=>(s="Steve Ballmer still does not know")+`.
${s+=" what he did"}.
${s+=" wrong"}.
${s} with mobile.`
)()
<pre id=o>


Хороший підхід, я "запозичив" це для своєї відповіді на C #.
TheLethalCoder

1
Можливо, я не розумію правила гри, але ця функція працює правильно, лише якщо ви перебуваєте в браузері та використовуєте внутрішній текст попереднього тегу, як ви. Тож чи не більше 102 байтів, оскільки це залежить від o.innerText = і <pre id = "o"> і насправді отримати елемент?
Пол

@Paul Я знаю, що це стара, але анонімна функція є прийнятною формою вводу-виводу в якості запису, тому поки вона повертає очікувані дані, не потрібно її відображати безпосередньо.
Дом Гастінгс


4

Сітківка , 95 86 байт

:`
Steve Ballmer still does not know.
:`.$
 what he did.
:`.$
 wrong.
.$
 with mobile.

Спробуйте в Інтернеті! Редагувати: Збережено 9 байт шляхом переходу від вихідних частин цілого рядка до складання рядка в шматки. :`Необхідно на перших трьох етапах , щоб зробити їх висновок.


о, це розумно, видаляючи все між wі e, потім видаляючи все між wrі e, потім wiі e. Не супер голий завдяки новій лінії Ретіни, але, безумовно, круто
Skidsdev

@Mayube виявився зовсім не надто гострим, тому я перейшов на методи. (Все ще не так круто, як відповідь Мартіна Ендера.)
Ніл

3

C #, 158 128 120 114 байт

()=>{var s="Steve Ballmer still does not know";return s+$@".
{s+=" what he did"}.
{s+=" wrong"}.
 with mobile.";};

Збережено 30 байт завдяки @KevinCruijssen.
Збережено 6 байт завдяки @Shaggy.


Версія, що використовує підрядку на 120 байт:

s=n=>"Steve Ballmer still does not know what he did wrong with mobile".Substring(0,n)+".\n";()=>s(33)+s(45)+s(51)+s(63);

Версія, запозичена у @KevinCruijssen на 128 байт:

()=>{string t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile"+d;};

Версія з використанням циклу на 158 байт:

()=>{var r="";for(int i=0;++i<5;)r+=$"Steve Ballmer still does not know{(i>1?$" what he did{(i>2?$" wrong{(i>3?" with mobile":"")}":"")}":"")}.\n";return r;};

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


В бік варто зазначити, що це працює лише для C# >= 6попередніх версій, не мають інтерпольованих рядків
Skidsdev

@Mayube Правда, але я гольфую цим, щоб використати підхід Кевіна на даний момент, оскільки це набагато краще, ніж мій ха-ха
TheLethalCoder

Gotta golf 2 байти більше, щоб ви могли перемогти відповідь Java D:
Skidsdev

@Mayube Відповіді Java зазвичай б'ють C #, оскільки вони не містять проміжку з двокрапкою. Завжди дратує!
TheLethalCoder

@Mayube Зробив це, хоча б ...
TheLethalCoder


3

Vim, 79 натискань клавіш

iSteve Ballmer still does not know.<CR><C-x><C-l><Backspace> what he did.<CR><C-x><C-l><Backspace> wrong.<CR><C-x><C-l><Left> with mobile

<C-x><C-l>автоматично завершує попередній рядок. Як альтернативи ви можете замінити кожне входження <CR><C-x><C-l>з<Esc>o<C-a>



3

Рубін, 94 байти

"!-3Z".bytes{|i|puts"Steve Ballmer still does not know what he did wrong with mobile"[0,i]+?.}

Ітератується через 4 символи в першому рядку, перетворюючи кожен на його значення ascii nі nкожного разу виводячи перші символи другого рядка. Дійсно не має значення, який останній символ першого рядка, доки його значення ascii дорівнює або перевищує довжину другого рядка.


3

Fission, 299 291 269 ​​байт

MN"."                             ]              ]        ]
                                  W$]            W$$]     W$$$]
R"Steve Ballmer still does not know"%[" what he did"%[" wrong"%[" with mobile.";
                                    [W              [W        [W

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

Нарешті 2D мова, яку я розумію!

Пояснення

Програма породжує атом з 1 масою і 0 енергією ( 1:0атом) Rна лінії 3 і починає рухатися праворуч.

"Steve Ballmer still does not know" друкує кожен символ.

% переміщує атом вгору, якщо він має 0 енергії, або декременти - це енергія і переміщує його вниз.

]переміщує атом вліво, $збільшує енергію атома, Wпереміщує атом вгору.

Після того, як атом знаходиться у верхньому ряду, він рухається вліво, доки не досягне ".", який друкує період, Nякий друкує новий рядок, і, нарешті M, який переміщує атом вниз Rзнову, який згодом переміщує атом праворуч .

Кожна петля енергії атома на одну вищу, тобто вона пройде через ще одну %. Після 4-ї петлі вона доходить до ;кінця третьої лінії, що руйнує атом. Програма припиняється, коли всі атоми знищуються.


Чи можете ви додати пояснення?
Кудлатий

@Shaggy зробить
Skidsdev

Ви можете стиснути верх набагато більше: 209 байт .
KSmarts

3

Japt , 70 68 65 61 60 59 байт

Містить кілька символів, які тут не відображатимуться; перейдіть за посиланням нижче, щоб побачити повний код.

`Sve Ba¥´r Ð]l º not know
 Ø  ¹d
 Ùg
 ØP ¶ßè`£'.iP±X}R

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

  • 3 4 байти збережено завдяки ETH , а також ще 4 з деякими підказками.

Пояснення

Все, що знаходиться між двома задніми таблицями, - це стислий рядок із наступного:

Steve Ballmer still does not know
 what he did
 wrong
 with mobile
`...`             :Decompress the string.
     £       }R   :Map over the each line X in the string
         P±X      :   Append X to P (initially the empty string)
      '.i         :   Prepend that to the string "."

1
Приємно. Ви можете зберегти кілька байтів, виконавши [`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}, а потім ще пару байтів, що включає видалення [та ](я дам вам зрозуміти, що з них).
ETHproductions

Хороший, @ETHproductions. Знадобилося мені пару хвилин, щоб розшифрувати, що між стисненням та символами SE не відображається, але я потрапив туди, і тепер я думаю, що я бачу і інші заощадження, на які ти натякаєш.
Кудлатий

1
Можливо, вам буде краще, якщо ви видалите розбиття та приєднання, а замість цього зробите £P±X +'.}Rв кінці
ETHproductions

@ETHproductions, він все ще надходить у 61 байт, але це, безумовно, акуратніше; позбавляється від необхідності у зворотному новому рядку. EDIT: О, зачекайте, ні, я можу зберегти 1 байт при такому підході :)
Shaggy



2

SOGL , 42 байти

⁹⁴<>‘υG‘Γω/w¹‘O‛Æw▓½0H(æ█◄K∆2Ξgh‘4{Tļ.@+;+

Пояснення:

..‘                    push "with mobile"
   ..‘                 push "wrong"
      ..‘              push "what he did"
         ..‘           push "Steve Ballmer still does not know"
            4{         4 times do
              T          output, not popping the top of stack
               ļ.        output "."
                 @+      append a space to the top thing in stack
                   ;+    reverse add (adding the next part to the top thing in stack)

Як ви використовуєте SOGL? Я встановив Processing і всі версії, хоча не можу зрозуміти, як би ви його запустили.
Ерік Аутгольфер

відкрийте "P5Parser" без міток версії, і в папку data/p.soglвставити код. Потім запустивши код обробки, слід запустити його, а вихід повинен знаходитися в консолі
dzaima

Спробував запустити ваш код, але він не має жодного виводу ... ./processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Ерік the Outgolfer

Це працює для мене. Спробуйте дати йому повний шлях замість p.sogl. якщо в STDOUT нічого немає P5Parser/output.txt, я не знаю.
дзайма

Це вихід для мене, розділений на STDOUT та STDERR.
Ерік Аутгольфер



2

Нім , 100 байт

for i in " ,2>":echo "Steve Ballmer still does not know what he did wrong with mobile"[0..i.int],"."

тут те саме в більш читабельному коді:

const str = "Steve Ballmer still does not know what he did wrong with mobile"

for i in [32, 44, 50, 62]:
  echo(str[0..i], ".")

Мова має нарізку рядків та верхні межі включно. Решта повинна пояснити себе, якщо ви знаєте програмування.


1

Вугілля деревне , 71 69 байт

A⟦⟧βF⪪”↓/‘ZQ≔'Wε}÷&’/↗∧μ~⎇²~ηρπ‖¢β\`σuσI⌀δ#″:§▶¬QγγQZ–” w⁺⪫⊞Oβι w¦.¶

Спробуйте в Інтернеті! Посилання полягає у багатослідній версії коду, при цьому деякі роздільники пропущені, оскільки девербосифікатор не може це зробити автоматично. В основному це порт відповіді @ KevinCruijssen.


1

> <> , 135 байт

".wonk ton seod llits remllaB evetS"\
l?!\o99+2*1./"h tahw  "32p10pao     \
52p\".did e"/"   "53p33p
  /\".gnorw"/
1p/\".elibom htiw;"3

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

Можливо, найкраще візуалізувати його за допомогою наведеного нижче посилання> <> ставок;

> <> ставок!

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


1
Мені ніколи не спадало на думку, що це knowнаписано назад wonk.
Цифрова травма

8
@DigitalTrauma Ну що ж, тепер ви
перемогли


1

> <> , 126 байт

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.