Codegolf - Загадочная История Стива Балмера

  • Автор темы GretlefaraceM
  • Обновлено
  • 20, Oct 2024
  • #1

Стив Баллмер — бывший генеральный директор Microsoft, и в недавняя статья, заявил, что он «до сих пор не знает, что он сделал не так с мобильным телефоном».

Как КодПроектВ информационном бюллетене отмечалось: «Название этой статьи могло бы заканчиваться во многих местах и ​​при этом оставаться точным».

При отсутствии входных данных выведите следующее:

 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.
 

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

Это так мало байтов на каждом языке побеждает

#код-гольф #код-гольф #строка #колмогоров-сложность

GretlefaraceM


Рег
27 Dec, 2013

Тем
85

Постов
208

Баллов
643
  • 26, Oct 2024
  • #2

Питон 3, 100 99 99 97 байт

-1 байт благодаря ovs
-1 байт благодаря Джонатану Аллану
-1 байт спасибо Деннису

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 f(c){for(c=0;write(1,"Steve Ballmer still does not know what he did wrong with mobile","!-3?"[c++]);puts("."));}
 

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

 

Bfans0908


Рег
09 Sep, 2012

Тем
55

Постов
188

Баллов
493
  • 26, Oct 2024
  • #4

Хаскель, 96 байт

,\

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

↑1⌽¨,\'.Steve Ballmer still does not know' ' what he did' ' wrong' ' with mobile' is like (s='Steve Ballmer still does not know what he did wrong with mobile.')=>{ let l=s.slice.bind(s) return `${l(0,33).\n${l(0,45)}.\n${l(0,51)}.\n${s}` } (или сокращение, как его называют на других языках), за исключением того, что он возвращает список всех промежуточных результатов, а не только окончательный. К каждому промежуточному результату добавляется import."fmt" func f(){for _,i:=range"!-3?"{Println("Steve Ballmer still does not know what he did wrong with mobile"[:i]+".")}} and all of them are concatenated into a single string.

 

Valerijafly


Рег
22 Sep, 2011

Тем
74

Постов
188

Баллов
598
  • 26, Oct 2024
  • #5

сетчатка, 82 75 байт

Спасибо Нилу за экономию 7 байт.

Подсчет байтов предполагает кодировку ISO 8859-1.

printf 'Steve Ballmer still does not %s. ' know{,' what he did'{,\ wrong{,\ with\ mobile}}}

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

Объяснение

s/^/Steve Ballmer still does not know./p s/\./ what he did./p s/\./ wrong./p s/\./ with mobile./

Инициализируйте рабочую строку полным заголовком.

..‘ 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)

Как отметил Нил, все три сокращения производятся перед словом, начинающимся с ⁹⁴<>‘υG‘Γω/w¹‘O‛Æw▓½0H(æ█◄K∆2Ξgh‘4{Tļ.@+;+ , and there are no other words starting with for(;$i<4;)echo"Steve Ballmer still does not know",["",$t=" what he did",$t.=" wrong","$t with mobile"][+$i++],". . Таким образом, мы сопоставляем пробел, за которым следует “ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œ?;ḷẓ“¡=~Ṃ©N|ȯ“¡?Ṃ“CṬṀWỌ»ḣJK;¥€”.Y to find the truncation points. At these points, we insert the following:

  • `...` :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 "." , a period and a linefeed to truncate the sentence and begin a new one.
  • Steve Ballmer still does not know what he did wrong with mobile , the entire string in front of the match, so that the next sentence starts over from the beginning.
  • `Sve Ba¥´r Ð]l º not know Ø ¹d Ùg ØP ¶ßè`£'.iP±X}R , the space and 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], ".") еще раз, чтобы они также были частью следующего предложения.

Нам не нужно соответствовать for i in " ,2>":echo "Steve Ballmer still does not know what he did wrong with mobile"[0..i.int],"." explicitly, because that will simply be what's left over on the third match.

 

Laprikon47


Рег
10 Sep, 2006

Тем
69

Постов
179

Баллов
564
  • 26, Oct 2024
  • #10

Желе, 52 46 байт

"."

Кредиты для W go to @EriktheOutgolfer, who used it in его ответ.

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

Как это работает

Львиная доля работы здесь выполняется словарным сжатием Jelly.

$

кодирует

]

там % indicates boundaries between words that where fetched from the dictionary and strings that were encoded character by character ( "Steve Ballmer still does not know" , R , и 1:0 ).

Сходным образом, MN"." ] ] ] W$] W$$] W$$$] R"Steve Ballmer still does not know"%[" what he did"%[" wrong"%[" with mobile."; [W [W [W encodes n (удивительно, n does нет из словаря), "!-3Z".bytes{|i|puts"Steve Ballmer still does not know what he did wrong with mobile"[0,i]+?.} encodes 4{)"Steve Ballmer still does not know hat he did rong ith mobile"N/<" w"*'.+N}% , and <Esc>o<C-a> encodes <CR><C-x><C-l> .

<C-x><C-l>

таким образом, получается массив строк

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

a=(Steve Ballmer still does not know "what he did" wrong with\ mobile) for i in {6..9};{ echo ${a[@]::i}.;} cumulatively reduces by concatenation, building the phrases on each line.

Окончательно, ()=>{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;}; computes the Cartesian product of these phrases and the dot character, and ()=>{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;}; разделяет полученные предложения переводом строки.

 

Txomin


Рег
30 Oct, 2005

Тем
83

Постов
199

Баллов
644
  • 26, Oct 2024
  • #11

JavaScript (ES6), 102 байта

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);

Попробуйте это

()=>{var s="Steve Ballmer still does not know";return s+$@". {s+=" what he did"}. {s+=" wrong"}. with mobile.";}; #define A"Steve Ballmer still does not know" #define B".\n"A" what he did" f(){puts(A B B" wrong"B" wrong with mobile.");}
 

Qlukasg


Рег
13 Jan, 2007

Тем
54

Постов
215

Баллов
495
  • 26, Oct 2024
  • #12

сетчатка, 95 86 байт

:`

Попробуйте онлайн! Изменить: сэкономлено 9 байт за счет перехода от вывода частей всей строки к построению строки по частям. :` Steve Ballmer still does not know. :`.$ what he did. :`.$ wrong. .$ with mobile. is needed on the first three stages to make them output.

 

Koljan72


Рег
27 Feb, 2007

Тем
78

Постов
208

Баллов
628
  • 26, Oct 2024
  • #14

С#, 158 128 120 114 байт

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

Сэкономлено 30 байт благодаря @KevinCruijssen.
Сэкономлено 6 байт благодаря @Shaggy.


Версия с использованием подстроки на 120 байт:

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

Версия позаимствована у @KevinCruijssen на 128 байт:

Y

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

p”.

Простой подход с использованием троичных операторов в цикле для добавления новых частей в строку каждый раз.

 

Kuzia2


Рег
22 Apr, 2008

Тем
81

Постов
196

Баллов
641
  • 26, Oct 2024
  • #16

Вим, 79 нажатий клавиш

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

“ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œ?;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/» auto-completes with the previous line. Alternatively you can replace every occurrence of with| mobile с Ṡ8gÐ/

 

Elf zolotuy


Рег
21 Oct, 2020

Тем
73

Постов
195

Баллов
600
  • 26, Oct 2024
  • #18

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

¥Ị)

Перебирает 4 символа в первой строке, преобразуя каждый в его значение ascii. he and outputting the first what| he| did символы второй строки каждый раз. На самом деле не имеет значения, какой последний символ первой строки, если его значение ascii равно или больше длины второй строки.

 

Creexemiadelm49


Рег
28 May, 2011

Тем
68

Постов
187

Баллов
537
  • 26, Oct 2024
  • #19

Деление, 299 291 269 байт

£Ṿ⁴'Þḣ~ẉ

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

Наконец-то 2D-язык, который я понимаю!

Объяснение

Программа порождает атом с 1 массой и 0 энергией ( t atom)at the es на линии 3 и начинает двигаться вправо.

mer prints each character.

| moves the atom up if it has 0 energy, or decrements it's energy and moves it down.

Steve| Ball|mer| still| do|es| no|t| know moves the atom to the left, ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œ?;ḷẓ увеличивает энергию атома, ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œ?;ḷẓ moves the atom up.

Как только атом оказывается в верхнем ряду, он перемещается влево, пока не достигнет “ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œ?;ḷẓ“£Ṿ⁴'Þḣ~ẉ“¥Ị)“Ṡ8gÐ/»;\p”.Y , which prints a period, ()->{String t="Steve Ballmer still does not know",d=".\n";return t+d+(t+=" what he did")+d+(t+=" wrong")+d+t+" with mobile.";} , который печатает новую строку, и, наконец, f(){printf("%.33s.\n%1$.45s.\n%1$s.\n%1$s with mobile.","Steve Ballmer still does not know what he did wrong");} , which moves the atom down to the ”™¸ïßme”“r„â‚à€–ƒ€“«…€À€½ƒ§'–Ñ„€Ž†©).pvyðý'.«» снова, что впоследствии смещает атом вправо.

В каждой петле энергия атома на единицу выше, то есть он пройдет еще на одну петлю. <?=$a="Steve Ballmer still does not know",$a=". $a what he did",$a.=" wrong",$a?> with mobile. . After the 4th loop it reaches the /1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong/1. 2. 3. 3 with mobile. в конце третьей строки, разрушающей атом. Программа завершается, как только все атомы будут уничтожены.

 

Spawnz


Рег
01 Jan, 2011

Тем
73

Постов
207

Баллов
582
  • 26, Oct 2024
  • #20

Ним, 100 байт

mobile

здесь то же самое в более читаемом коде:

w

В языке есть нарезка строк и инклюзивные верхние границы. Остальное должно объясниться, если вы знаете программирование.

 

Diges


Рег
11 Jun, 2007

Тем
69

Постов
187

Баллов
572
  • 26, Oct 2024
  • #21

Япт, 70 68 65 61 60 59 байт

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

$&

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

  • 3 4 байта сэкономлены благодаря ЭТХ, плюс еще 4 с некоторыми подсказками.

Объяснение

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

$` ||answer||

Желе, 49 байт

w

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

 

CromSinoaxoro81


Рег
25 Oct, 2024

Тем
69

Постов
184

Баллов
549
  • 26, Oct 2024
  • #26

JavaScript (ES6, без зависимости от браузера) 154 байта

foldl

Другое решение ES6 требует (и не учитывает) использования API-интерфейсов html и html-элементов.

 

Айшвария


Рег
18 Dec, 2010

Тем
70

Постов
204

Баллов
554
  • 26, Oct 2024
  • #27

APL (Диалог Юникод), 81 байтыСБКС

scanl

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

Один самый правильный: у нас есть список строк.

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

„€Ž†© # 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  cyclically rotate each one step left (puts the periods at the ends)

„€Ž†©'–Ñ…€À€½ƒ§“mer„â‚à€–ƒ€“”™¸ïß”[Žì'.«=¨ð«  mix the list of strings into a character matrix

 

Dumler1956


Рег
11 Nov, 2019

Тем
88

Постов
204

Баллов
654
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно