Steve Ballmer'ın Tuhaf Hikayesi


46

Steve Ballmer, Microsoft'un eski CEO'sudur ve son bir makalesinde "mobilde neyi yanlış yaptığını hala bilmediğini" iddia etti.

As CodeProject 'ın bülten işaret, 'Bu makalenin başlığı birçok noktalar böylece sona erdi ve hala doğru olabilir'.

Giriş yoksa, aşağıdakileri çıktı alın:

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.

Bu tam olarak gösterildiği gibi çıkarılmalı ve programınızın tek çıktısı olmalıdır. Tek bir izleyen yeni satır ekleyebilirsiniz.

Bu yani her dilde en az bayt kazanıyor


59
Başlık / etiketleri görünce çıktının olacağını düşündümdevelopers developers ...
Rod

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

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

16
Ve ben xkcd's Ballmer Peak
ojdo

5
evet, 14 -yes developers
sergiol

Yanıtlar:


26

Python 3 , 100 99 99 97 bayt

Ovs sayesinde
-1 bayt Jonathan Allan
sayesinde -1 bayt sayesinde Dennis sayesinde -1 bayt

for i in b'!-3?':print('Steve Ballmer still does not know what he did wrong with mobile'[:i]+'.')

Çevrimiçi deneyin!


17

Haskell, 96 bayt

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

Çevrimiçi deneyin!

scanlfoldlsadece sonuncusu yerine tüm ara sonuçların bir listesini döndürmesi dışında benzer (ya da diğer dillerde çağrıldığı gibi azalır). Her ara sonuç eklenir ".\n"ve hepsi tek bir dizgide birleştirilir.


17

05AB1E , 50 49 45 44 bayt

Kevin'in Java cevabından ilham alarak 4 bayt kurtardı

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

Çevrimiçi deneyin!

açıklama

„€Ž†©                                         # 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

Oh güzel, her şey için sözlük sıkıştırma kullanmayı başardı Ballmer?
Skidsdev

@ Mayube: Evet. Orijinal dize yeniden yapılandırarak bir bayt kurtarmak için kısmen şimdi (top) var :)
Emigna

şimdi çok daha iyi görünüyor, eğer bunu sıkıştırabilirsenizmer
Skidsdev

@Mayube: Sıkıştırarak gizleyebilirim meama ne yazık ki herhangi bir byte kaydetmez: /
Emigna


15

Retina , 82 75 bayt

Neil'e 7 byte kaydettiği için teşekkürler.

Bayt sayısı, ISO 8859-1 kodlamasını varsayar.


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

Çevrimiçi deneyin!

açıklama


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

Çalışma dizesini tam başlığa sıfırla.

 w
.¶$`$&

Neil'in belirttiği gibi, her üç kısaltma da bir sözcükten önce başlıyor wve ondan başlayacak başka bir kelime yok w. Böylece w, kesişme noktalarını bulmak için a'dan sonra gelen bir boşlukla eşleşiriz. Bu noktalara aşağıdakileri ekliyoruz:

  • , cümleyi kısaltmak ve yeni bir tanesini başlatmak için bir dönem ve bir çekişme.
  • $`, tüm dize maçın önünde, böylece bir sonraki cümle baştan başlar.
  • $&, boşluk ve wtekrar, böylece onlar da bir sonraki cümlenin parçası.

mobileAçıkça eşleşmemize gerek yok çünkü üçüncü maçta kalan şey bu olacak.


3
Sadece <space> w ile eşleşmeniz ve ile değiştirmeniz yeterlidir .¶$`$&.
Neil

@Neil Oh, bu gerçekten düzgün, teşekkür ederim. :)
Martin Ender

9

PHP, 104 95 94 bayt

<?=$a="Steve Ballmer still does not know",$a=".
$a what he did",$a.=" wrong",$a?> with mobile.

1
Ne "eksik"?
TheLethalCoder

8

/// , 88 bayt

@MartinEnder tarafından kaydedilen 8 bayt!

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

Çevrimiçi deneyin!


1
Önceki öneki her bir değiştirmeye getirerek
Martin Ender

@MartinEnder Bu özellikle zekice. Teşekkürler!
steenbergh

1
Oh, ve bir başka 5 4tamamen düşerek : tio.run/##DcLRDcMgDAXA/…
Martin Ender

5
@MartinEnder "Evet, cep telefonu ile bir numara 3 alacağım, lütfen."
steenbergh


7

Java 8, 127 126 bayt

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

@KonstantinCh sayesinde -1 bayt .

Burada dene.


1
Umarım fikrinizi çalmam sakıncası yoktur, döngüsel yaklaşımımdan çok daha iyi.
TheLethalCoder

@ TheLethalCoder Hiç sorun değil, çünkü beni itibar ettiğini anlıyorum. :) Btw, C # lambda'nızda stringolamaz varmı?
Kevin Cruijssen

Hayır çünkü aynı anda birden fazla ilan ediyorum.
TheLethalCoder

@ TheLethalCoder Ah tabii ki benim kötü .. Ve ()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};ne yazık ki üç bayt daha uzun.
Kevin Cruijssen

1
Konstantin Ch , son satır beslemesi isteğe bağlı olduğu için sonunda bir bayt tasarruf "+dedecek ."şekilde değiştirmeyi önerir .
Martin Ender


6

Jelly , 52 46 bayt

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

İçin krediler ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓkullanmış @EriktheOutgolfer, hiç hareket onun cevabını .

Çevrimiçi deneyin!

Nasıl çalışır

Eserin aslan payı burada Jelly'in sözlük sıkıştırmasıyla yapılır.

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

kodlar

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

Orada |kelimeleri arasındaki sınırlar gösterir nerede getirilen Karakter bazında kodlanmış edildi sözlüğe ve ipten ( mer, esve t).

Benzer şekilde, £Ṿ⁴'Þḣ~ẉkodlar  what| he| did(şaşırtıcı hegelmez değil , sözlükten gel) ¥Ị)kodlar  wrongve Ṡ8gÐ/kodlar  with| mobile.

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

Böylece string dizisini verir

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

;\ her satırda ifadeleri oluşturarak, birleştirme yoluyla kümülatif olarak azalır.

Son olarak, p”.bu cümleciklerin Kartezyen ürününü ve nokta karakterini hesaplar ve Yelde edilen cümleleri satır beslemeleri ile ayırır.


Benim sayıma göre bu 97 bayttır.
Stig Hemmer

@StigHemmer UTF-8'de olur. Bununla birlikte, Jelly ayrıca bu tek baytlık karakter kümesini de destekler .
Dennis,

6

JavaScript (ES6), 102 bayt

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

Dene

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


Güzel yaklaşım C # cevabım için "ödünç aldım".
TheLethalCoder

1
Belki de oyunun kurallarını anlamıyorum, ancak bu işlev yalnızca bir tarayıcıdaysanız ve ön etiketindeki sizinki gibi iç metin kullanıyorsanız doğru çalışır. Öyleyse, bu 102 bayttan fazla değil mi, çünkü o.innerText = ve <pre id = "o"> 'ye bağlı ve aslında öğeyi ele geçiriyor?
Paul

@Paul Bunun eski olduğunu biliyorum ama adsız bir işlev giriş olarak kabul edilebilir bir G / Ç biçimidir, bu nedenle beklenen verileri döndürdüğü sürece, doğrudan görüntülemesi gerekmez.
Dom Hastings


4

Retina , 95 86 bayt

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

Çevrimiçi deneyin! Düzenleme: Tüm dizenin çıkış kısımlarından dizgenin parçalar halinde oluşturulmasına geçilerek 9 bayt kaydedildi. Bunların :`ilk üç aşamada üretime sokulması gerekir.


ooh arasındaki her şeyi silerek, zeki wve earalarında, daha sonra silme her şey wrve esonra wive e. Retina'nın yeni üyeliği nedeniyle süper golf sahası değil, ama yine de havalı bir şekilde süper
Skidsdev

@ Mayube Hiç golf sahası olmadı, ben de yöntemleri değiştirdim. (Yine de Martin Ender'in cevabı kadar havalı değil.)
Neil

3

C #, 158 128 120 114 bayt

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

@KevinCruijssen sayesinde 30 bayt kaydedildi.
@Shaggy sayesinde 6 bayt kaydedildi.


120 bayt için alt dize kullanarak sürüm:

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'den 128 byte ödünç alınan sürüm:

()=>{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 bayt için döngü kullanan sürüm:

()=>{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;};

Yeni ifadeleri her seferinde dizeye eklemek için üçlü ifadeleri bir döngü halinde kullanmak için basit yaklaşım.


Bir kenara, bunun yalnızca C# >= 6önceki sürümlerin enterpolasyonlu dizeleri olmadığı için çalıştığını belirtmek gerekir
Skidsdev

@Mayube Doğru, ama bu çok daha iyi benim daha haha olduğu gibi şu anda Kevin'in yaklaşımını kullanmak golf ediyorum
TheLethalCoder

2 bayt golf
atayım

@ Mayube Java genellikle C # 'yı yendi çünkü takip eden bir yarı-kolon içermiyorlardı. Her zaman sinir bozucu!
TheLethalCoder

@Mayube Bitti, en azından şu an için ...
TheLethalCoder


3

Vim, 79 tuş vuruşları

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>önceki satırla otomatik olarak tamamlanır. Alternatif olarak <CR><C-x><C-l>ile her oluşumunu değiştirebilirsiniz<Esc>o<C-a>



3

Ruby, 94 bayt

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

İlk dizedeki 4 karakter boyunca yinelenir, her birini ascii değerine dönüştürür nve nher seferinde ikinci dizenin ilk karakterlerini çıkarır . İlk dizginin son karakterinin ne olduğu önemli değildir, ascii değeri ikinci dizginin uzunluğuna eşit veya daha büyük olduğu sürece.


3

Fisyon, 299 291 269 ​​bayt

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

Çevrimiçi deneyin!

Sonunda bir 2D dili anlıyorum!

açıklama

Program , satır 3'te 1 kütle ve 0 enerjili ( 1:0atom) bir atom Roluşturur ve sağa doğru hareket etmeye başlar.

"Steve Ballmer still does not know" her karakteri basar.

% 0 enerjisine sahipse atomu yukarı doğru hareket ettirir veya enerjisini azaltır ve aşağı doğru hareket ettirir.

]atomu sola doğru hareket ettirir, atomun $enerjisini Warttırır, atomu yukarı doğru hareket ettirir.

Atom üst satırda çıktığında bunun ulaşana kadar, bu sola hareket "."bir dönem, yazdıran Nnihayet yeni satır yazdırır ve, Maşağı atomu taşır, Rdaha sonra sağa atomu taşır yine .

Atomun enerjisi her döngü bir daha yüksektir, yani bir daha geçecektir %. 4. döngüden sonra, ;atomu yok eden üçüncü hattın sonuna ulaşır . Tüm atomlar yok edildiğinde program sona erer.


Bir açıklama ekler misiniz?
Shaggy,

@Shaggy yapacak
Skidsdev

Üst kısmı daha çok sıkıştırabilirsiniz: 209 bayt .
KSmarts

3

Japt , 70 68 65 61 60 59 bayt

Burada gösterilmeyen birkaç karakter içerir; kodun tamamını görmek için aşağıdaki bağlantıyı izleyin.

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

Çevrimiçi deneyin

  • ETH sayesinde 3 4 bayt kaydedildi , bazıları da sorulduğunda başka 4.

açıklama

2 geri tepme çubuğu arasındaki her şey aşağıdakilerin sıkıştırılmış bir dizesidir:

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
Güzel. Bunu yaparak bazı baytları kaydedebilir [`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}, daha sonra birkaç tane daha bayt kaldırabilir [ve ](bunu çözmenize izin vereceğim).
ETHproductions

Güzel, @ETHproductions. Sıkıştırma ve SE karakterleri arasında görüntülenmediğini çözmem birkaç dakika sürdü, ancak oraya gittim ve şimdi sanırım diğer tasarrufları da düşündüğünüzü görüyorum.
Shaggy

1
£P±X +'.}R
Yarılmayı

@ETHproductions, hala 61 bayt geliyor, ama kesinlikle daha düzgün; takip eden newline olan ihtiyaçtan kurtulur. EDIT: Ah, bekle, hayır, bu yaklaşımla 1 byte tasarruf edebilirim :)
Shaggy



2

SOGL , 42 bayt

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

Açıklama:

..‘                    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'ı nasıl kullanıyorsunuz? Nasıl çalıştığını çözemesem de, Processing'i ve tüm sürümlerini yükledim.
Outgolfer Erik,

"P5Parser" ı sürüm etiketi olmadan açın data/p.soglve kodun içindeki klasörüne yapıştırın. Daha sonra işlem kodunu çalıştırmak onu çalıştırmalı ve çıktı konsolda olmalıdır
dzaima

Kodunuzu çalıştırmaya çalıştı, ancak herhangi bir çıktısı yok ..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Erik Outgolfer

Benim için çalışıyor. Bunun yerine tam yol vermeyi deneyin p.sogl. STDOUT'da hiçbir şey yoksa veya P5Parser/output.txtbilmiyorum.
dzaima

Bu benim için çıktı, STDOUT ve STDERR'ye ayrılmış.
Outgolfer Erik,



2

Nim , 100 bayt

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

burada daha okunabilir kodda aynı:

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], ".")

Dilde dize dilimleme ve üst sınırlar vardır. Programlamayı biliyorsanız geri kalanın kendisini açıklaması gerekir.


1

Kömür , 71 69 bayt

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

Çevrimiçi deneyin! Link, kod sürümünü vermektir, çünkü bazı ayırıcılar ihmal edilir, çünkü deverbosifier bunu otomatik olarak yapamaz. Bu temelde @ KevinCruijssen'in cevabının bir limanı.


1

> <> , 135 bayt

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

Bu, temel olarak dizgiden geçer, daha sonra, kod boyunca ilerlemeye devam etmek için, tamsayıyı ve koşullayıcıları boşluklarla değiştirir.

Aşağıdaki> <> havuz bağlantısını kullanarak görselleştirmek en iyisi olabilir;

> <> gölet!

Çevrimiçi deneyin!


1
Hiçbir zaman knowgeriye doğru hecelenen aklıma gelmedi wonk.
Dijital Travma

8
@DigitalTrauma Eh, şimdi
kazandın

1

Mathematica, 108 104 bayt

"Steve Ballmer still does not know what he did wrong with mobile"~StringTake~#~Print~"."&/@{33,45,51,63}


Çevrimiçi deneyin!

Martin'den -4 byte


1

> <> , 126 bayt

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.