Vụ án tò mò của Steve Ballmer


46

Steve Ballmer là cựu CEO của Microsoft, và trong một bài báo gần đây , đã tuyên bố rằng ông "vẫn không biết mình đã làm gì sai với thiết bị di động".

Như bản tin của CodeProject đã chỉ ra, "Tiêu đề của bài viết đó có thể kết thúc ở rất nhiều điểm và vẫn chính xác".

Không có đầu vào, đầu ra như sau:

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.

Điều này phải được xuất ra chính xác như được hiển thị và phải là đầu ra duy nhất của chương trình của bạn. Bạn có thể bao gồm một dòng mới duy nhất.

Đây là nên ít byte nhất trong mỗi ngôn ngữ sẽ thắng


59
Khi tôi nhìn thấy tiêu đề / thẻ tôi đã nghĩ rằng đầu ra sẽ làdevelopers developers ...
Rod

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

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

16
Và tôi nghĩ về Đỉnh Ballmer
ojdo

5
có, 14 -yes developers
sergiol

Câu trả lời:


26

Python 3 , 100 99 99 97 byte

-1 byte nhờ vào
các byte -1 byte nhờ Jonathan Allan
-1 byte nhờ Dennis

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

Hãy thử trực tuyến!


17

Haskell, 96 byte

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

Hãy thử trực tuyến!

scanlgiống như foldl(hoặc giảm khi nó được gọi bằng các ngôn ngữ khác) ngoại trừ nó trả về một danh sách tất cả các kết quả trung gian thay vì chỉ kết quả cuối cùng. Mỗi kết quả trung gian được nối với ".\n"và tất cả chúng được nối vào một chuỗi.


17

05AB1E , 50 49 45 44 byte

4 byte được lưu với cảm hứng từ câu trả lời Java của Kevin

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

Hãy thử trực tuyến!

Giải trình

„€Ž†©                                         # 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 tốt đẹp, quản lý để sử dụng nén từ điển cho tất cả mọi thứ nhưng Ballmer?
Skidsdev

@Mayube: Vâng. Bây giờ tôi đã nhận được một phần (bóng) để tiết kiệm một byte bằng cách cấu trúc lại chuỗi ban đầu :)
Emigna

Bây giờ trông tốt hơn nhiều, nếu chỉ bạn có thể nén nómer
Skidsdev

@Mayube: Tôi có thể ẩn nó bằng cách nén menhưng thật không may, nó sẽ không lưu bất kỳ byte nào: /
Emigna

2
@StigHemmer: Đó là 44 byte trong trang mã
05AB1E

15

Võng mạc , 82 75 byte

Cảm ơn Neil vì đã tiết kiệm 7 byte.

Số lượng byte giả định mã hóa ISO 8859-1.


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

Hãy thử trực tuyến!

Giải trình


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

Khởi tạo chuỗi làm việc với tiêu đề đầy đủ.

 w
.¶$`$&

Như Neil đã chỉ ra, cả ba lần cắt đều được thực hiện trước một từ bắt đầu wvà không có từ nào khác bắt đầu bằng w. Vì vậy, chúng tôi phù hợp với một không gian theo sau là a wđể tìm các điểm cắt. Tại những điểm này, chúng tôi chèn như sau:

  • , một khoảng thời gian và một nguồn cấp dữ liệu để cắt ngắn câu và bắt đầu một câu mới.
  • $`, toàn bộ chuỗi phía trước trận đấu, để câu tiếp theo bắt đầu lại từ đầu.
  • $&, khoảng trắng và wmột lần nữa, để chúng cũng là một phần của câu tiếp theo.

Chúng ta không cần phải khớp một mobilecách rõ ràng, bởi vì đó đơn giản sẽ là những gì còn sót lại trong trận đấu thứ ba.


3
Bạn chỉ cần khớp trên <dấu cách> w và thay thế bằng .¶$`$& .
Neil

@Neil Oh, thật là gọn gàng, cảm ơn bạn. :)
Martin Ender


8

/// , 88 byte

8 byte được lưu bởi @MartinEnder!

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

Hãy thử trực tuyến!


1
Bạn có thể tiết kiệm thêm một chút bằng cách di chuyển tiền tố trước vào mỗi lần thay thế: tio.run/ Kẻ
Martin Ender

@MartinEnder Điều đó đặc biệt thông minh. Cảm ơn!
steenbergh

1
Ồ, và 5 người khác bằng cách bỏ 4hoàn toàn: tio.run/##DcLRDcMgDAXA/ Kẻ
Martin Ender

5
@MartinEnder "Vâng, tôi sẽ có số 3 với điện thoại di động."
steenbergh


7

Java 8, 127 126 byte

()->{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 byte nhờ @KonstantinCh .

Hãy thử nó ở đây.


1
Hy vọng bạn không bận tâm rằng tôi đã đánh cắp ý tưởng của bạn, nó tốt hơn nhiều so với phương pháp lặp của tôi.
TheLethalCoder

@TheLethalCoder Không có vấn đề gì cả, vì tôi thấy bạn đã ghi có vào tôi. :) Btw, stringkhông thể có vartrong lambda C # của bạn?
Kevin Cruijssen

Không bởi vì tôi khai báo nhiều lần cùng một lúc.
TheLethalCoder

@TheLethalCoder Tất nhiên, xấu của tôi .. Và ()=>{var t="Steve Ballmer still does not know";return t+".\n"+(t+=" what he did")+".\n"+(t+=" wrong")+".\n"+t+" with mobile"+".";};không may là ba byte dài hơn.
Kevin Cruijssen

1
Konstantin Ch đề nghị thay đổi "+dở cuối ."để lưu một byte vì nguồn cấp dữ liệu cuối cùng là tùy chọn.
Martin Ender


6

Thạch , 52 46 byte

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

Tín dụng để ṬċḌ)⁹œḃṣ⁷Ṅḋ%W3Œƭ;ḷẓtruy cập @EriktheOutgolfer, người đã sử dụng nó trong câu trả lời của mình .

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Phần lớn công việc được thực hiện bằng cách nén từ điển của Jelly tại đây.

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

mã hóa

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

|chỉ ra ranh giới giữa các từ đó mà lấy từ các từ điển và chuỗi đã được mã hóa từng ký tự ( mer, est).

Tương tự, £Ṿ⁴'Þḣ~ẉmã hóa  what| he| did(đáng ngạc nhiên, hekhông phải xuất phát từ điển), ¥Ị)mã hóa  wrong, và Ṡ8gÐ/mã hóa  with| mobile.

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

do đó mang lại mảng chuỗi

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

;\ tích lũy giảm bằng cách ghép, xây dựng các cụm từ trên mỗi dòng.

Cuối cùng, p”.tính toán sản phẩm của Cartesian của các cụm từ này và ký tự dấu chấm, và Yphân tách các câu kết quả bằng các dòng.


Theo tính toán của tôi, đây là 97 byte.
Stig Hemmer

@StigHemmer Trong UTF-8, nó sẽ như vậy. Tuy nhiên, Jelly cũng hỗ trợ bộ ký tự một byte này .
Dennis

6

JavaScript (ES6), 102 byte

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

Thử nó

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


Cách tiếp cận tốt đẹp tôi đã "mượn" nó cho câu trả lời C # của mình.
TheLethalCoder

1
Có thể tôi không hiểu luật chơi, nhưng chức năng này chỉ hoạt động chính xác nếu bạn đang ở trong trình duyệt và sử dụng thẻ preertext như bạn đã làm. Vì vậy, không phải là hơn 102 byte, vì nó phụ thuộc vào o.innerText = và <pre id = "o"> và thực sự nhận được phần tử?
Paul

@Paul Tôi biết cái này đã cũ nhưng, một hàm ẩn danh là dạng I / O được chấp nhận như một mục nhập, miễn là nó trả về dữ liệu dự kiến, thì không cần hiển thị trực tiếp.
Dom Hastings


4

Võng mạc , 95 86 byte

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

Hãy thử trực tuyến! Chỉnh sửa: Đã lưu 9 byte bằng cách chuyển từ xuất ra các phần của toàn bộ chuỗi để xây dựng chuỗi thành từng mảnh. Điều :`cần thiết trên ba giai đoạn đầu tiên để làm cho chúng đầu ra.


Thật là thông minh, xóa mọi thứ giữa wesau đó xóa mọi thứ giữa wresau đówie. Không phải siêu golf do tính mới của Retina, nhưng chắc chắn không ngầu
Skidsdev

@Mayube Hóa ra không phải là rất golf, vì vậy tôi đã chuyển đổi phương pháp. (Vẫn không ngầu như câu trả lời của Martin Ender.)
Neil

3

C #, 158 128 120 114 byte

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

Đã lưu 30 byte nhờ @KevinCruijssen.
Đã lưu 6 byte nhờ @Shaggy.


Phiên bản sử dụng chuỗi con cho 120 byte:

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

Phiên bản mượn từ @KevinCruijssen với 128 byte:

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

Phiên bản sử dụng vòng lặp cho 158 byte:

()=>{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ách tiếp cận đơn giản bằng cách sử dụng các câu lệnh ternary vào một vòng lặp để nối các phần mới vào chuỗi mỗi lần.


Bên cạnh đó, đáng chú ý là điều này chỉ hoạt động cho C# >= 6các phiên bản trước đó không có chuỗi nội suy
Skidsdev

@Mayube Đúng, nhưng tôi đang chơi golf để sử dụng phương pháp của Kevin vào lúc này vì nó tốt hơn tôi rất nhiều haha
TheLethalCoder

Gotta golf thêm 2 byte để bạn có thể đánh bại câu trả lời java D:
Skidsdev

@Mayube Các câu trả lời Java thường đánh bại C # vì chúng không bao gồm dấu chấm phẩy. Luôn luôn khó chịu!
TheLethalCoder

@Mayube Hoàn thành nó, ít nhất là ...
TheLethalCoder


3

Vim, 79 tổ hợp phím

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>tự động hoàn thành với dòng trước. Ngoài ra, bạn có thể thay thế mọi lần xuất hiện <CR><C-x><C-l>với<Esc>o<C-a>



3

Ruby, 94 byte

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

Lặp lại qua 4 ký tự trong chuỗi đầu tiên, chuyển đổi từng ký tự thành giá trị ascii của nó nvà xuất ra các nký tự đầu tiên của chuỗi thứ hai mỗi lần. Nó thực sự không quan trọng ký tự cuối cùng của chuỗi thứ nhất là gì, miễn là giá trị ascii của nó bằng hoặc lớn hơn độ dài của chuỗi thứ hai.


3

Phân hạch, 299 291 269 ​​byte

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

Hãy thử trực tuyến!

Cuối cùng là một ngôn ngữ 2D tôi hiểu!

Giải trình

Chương trình sinh ra một nguyên tử có 1 khối lượng và 0 năng lượng (một 1:0nguyên tử) tạiR dòng 3 và bắt đầu di chuyển sang phải.

"Steve Ballmer still does not know" in từng ký tự.

% di chuyển nguyên tử lên nếu nó có 0 năng lượng, hoặc giảm năng lượng của nó và di chuyển nó xuống.

]di chuyển nguyên tử sang trái, $tăng năng lượng của nguyên tử, Wdi chuyển nguyên tử lên.

Khi nguyên tử ở hàng trên cùng, nó sẽ di chuyển sang bên trái, cho đến khi nó chạm tới ".", in ra một khoảng thời gian, Nin một dòng mới, và cuối cùng M, di chuyển nguyên tử xuống Rmột lần nữa, sau đó di chuyển nguyên tử sang bên phải .

Mỗi vòng năng lượng của nguyên tử cao hơn một lần, nghĩa là nó sẽ truyền qua một lần nữa %. Sau vòng lặp thứ 4, nó đến ;cuối dòng thứ ba, phá hủy nguyên tử. Chương trình chấm dứt một khi tất cả các nguyên tử bị phá hủy.


Bạn có thể thêm một lời giải thích?
Shaggy

@Shaggy sẽ làm
Skidsdev

Bạn có thể nén đỉnh nhiều hơn nữa: 209 byte .
KSmarts

3

Japt , 70 68 65 61 60 59 byte

Chứa một vài ký tự sẽ không hiển thị ở đây; theo liên kết dưới đây để xem mã đầy đủ.

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

Dùng thử trực tuyến

  • 3 4 byte được lưu nhờ ETH , cộng thêm 4 byte với một số lời nhắc.

Giải trình

Tất cả mọi thứ giữa 2 backticks là một chuỗi nén sau:

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
Đẹp. Bạn có thể lưu một số byte bằng cách thực hiện [`Sve Ba¥´r Ð]l º not know`` Ø ¹d`` Ùg`` ØP ¶ßè.`]m@P+=X}, sau đó thêm một vài byte liên quan đến việc loại bỏ [](tôi sẽ cho phép bạn tìm ra byte đó ).
Sản xuất

Đẹp một, @ETHproductions. Mất vài phút để giải mã rằng giữa nén và ký tự SE không hiển thị nhưng tôi đã đến đó và bây giờ tôi nghĩ rằng tôi cũng thấy sự tiết kiệm khác mà bạn đang ám chỉ.
Shaggy

1
Bạn có thể tốt hơn nếu bạn loại bỏ việc chia tách và tham gia, và thay vào đó thực hiện £P±X +'.}Rở cuối
ETHproductions

@ETHproductions, nó vẫn có 61 byte, nhưng nó chắc chắn gọn gàng hơn; thoát khỏi sự cần thiết cho dòng mới. EDIT: Ồ, đợi đã, không, tôi có thể tiết kiệm 1 byte với cách tiếp cận đó :)
Shaggy



2

SOGL , 42 byte

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

Giải trình:

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

Làm thế nào để bạn sử dụng SOGL? Tôi đã cài đặt Xử lý và tất cả các phiên bản, mặc dù tôi không thể tìm ra cách bạn sẽ chạy nó.
Erik the Outgolfer

mở "P5Parser" không có nhãn phiên bản và trong thư mục của nó để data/p.sogldán mã. Sau đó, chạy mã xử lý sẽ chạy nó và đầu ra phải ở trong bảng điều khiển
dzaima

Đã thử chạy mã của bạn, nhưng nó không có bất kỳ đầu ra nào ..../processing-java --sketch=../SOGL/P5Parser --run p.sogl ""
Erik the Outgolfer

Nó làm việc cho tôi. Hãy thử cho nó con đường đầy đủ thay vì p.sogl. nếu không có gì trong STDOUT hoặc P5Parser/output.txt, tôi không biết.
dzaima

Đây là đầu ra cho tôi, được tách thành STDOUT và STDERR.
Erik the Outgolfer



2

Nim , 100 byte

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

ở đây giống nhau trong mã dễ đọc hơn:

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

Ngôn ngữ có chuỗi cắt và giới hạn trên bao gồm. Phần còn lại sẽ tự giải thích nếu bạn biết lập trình.


1

Than , 71 69 byte

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

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã, với một số dấu phân tách bị bỏ qua vì deverbosifier không thể tự động làm điều đó. Đây về cơ bản là một cổng câu trả lời của @ KevinCruijssen.


1

> <> , 135 byte

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

Điều này về cơ bản đi qua chuỗi, in sau đó thay thế fullstop và điều kiện bằng khoảng trắng để tiếp tục di chuyển dọc theo mã.

Có thể tốt nhất để hình dung nó bằng cách sử dụng liên kết dưới đây> <> ao;

> <> ao!

Hãy thử trực tuyến!


1
Nó không bao giờ xảy ra với tôi rằng knowđánh vần ngược là wonk.
Chấn thương kỹ thuật số

8
@DigitalTrauma Chà, bây giờ bạn đã thắng
ETHproductions


1

> <> , 126 byte

 \"elibom htiw \"10p";"15p
  "gnorw  "10p
  "did eh tahw \"11p
 \"wonk ton seod llits remllaB evetS\"12p04.
  l?!vo
oo00.>a"."
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.