Спочатку вони прийшли


29

"Спочатку вони прийшли ..." - це вірш Мартіна Німеллера :

First they came for the Socialists, and I did not speak out-
Because I was not a Socialist.

Then they came for the Trade Unionists, and I did not speak out-
Because I was not a Trade Unionist.

Then they came for the Jews, and I did not speak out-
Because I was not a Jew.

Then they came for me-and there was no one left to speak for me.

Ваше завдання - вивести вищезазначене. Це , тому найкоротший код у байтах виграє!

Правила

  • Ви можете включити додатковий пробіл, який не впливає на зовнішній вигляд. Допускається одна затримка нового рядка.
  • В іншому випадку результат повинен точно збігатися, включаючи розташування нових рядків.
  • Відповідно до мета-стандартів, ви можете вивести список рядків. Однак ви повинні включити порожні рядки.

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


7
Я не впевнений, що це додає на сайт вище та поза викликом RickRoll.
AdmBorkBork

7
Мені не подобається забивання сюрпризів.
програміст5000


11
Один раз, я не думаю, що це дурний Рікролл. Тут є змістовна структура. Паралелізм допускає різні стратегії. Повторне відкриття.
xnor

3
Структура є аргументом на користь того, щоб бути дурнем рикролу, а не проти.
Пітер Тейлор

Відповіді:


8

SOGL V0.12 , 103 102 101 байт

 →∑‘¾ο╤Ε9‘}ψ⁴‘¹"4¡‘Q°‘:¹¹I{ū_:¹"Eā/}l6⁸SÆ□⁴↔b⅜╬I℮;YΥηκ*█⅞F^Κ⅜⁸{x⅔⁵⅟╚?Z‘O}"Ι╚╬√⅔δηvΧχ⁷⁾Η<υL┼!Ο'μΠ⁵╝⁷‘⁾

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

Пояснення (тут я замінив стиснуті рядки на, ..щоб заощадити місце):

..‘.‘..‘                              push "socialist", "trade unionist" and "jew"
        ¹                             wrap in an array: ["socialist", "trade unionist", "jew"]
         "..‘..‘                      push "first" and "then"
                :                     duplicate the then
                 ¹                    wrap in an array: ["first","then","then"]
                  ¹                   wrap those two in an array: [["socialist", "trade unionist", "jew"], ["first","then","then"]]
                   I                  rotate clockwise: [[first,socialist], [then,trade unionist], [then,jew]]
                    {         }       for each do, pushing the array
                     ū                  uppercase the 1st letter of each word in the array - ["First", "Socialist"]
                      _                 splat the contents on the stack   "First", "Socialist"
                       :                duplicate the 2nd one             "First", "Socialist", "Socialist"
                        ¹               wrap in an array                  ["First", "Socialist", "Socialist"]
                         "..‘           push "ŗ they came for the ŗs, and I did not speak out-\nBecause I was not a ŗ." with ŗ replaced with its appropriate item in the array
                             O          output that
                               "..‘   push "then they came for me-and there was no one left to speak for me."
                                   ⁾  uppercase the 1st letter of it
                                      implicitly output it in a new line

Чи можете ви додати пояснення, будь ласка?
Nzall

@Nzall Забув, писав
dzaima

@Nzall Додав пояснення
dzaima

7

6502 код машини (C64), 229 байт

Вигляд нудний, все-таки виконується на C64 з дещо пристойною кількістю байтів :)

00 C0 A9 17 8D 18 D0 A2 2C 86 FE A6 FE A0 C0 BD B6 C0 20 1E AB C6 FE 10 F2 60
C6 49 52 53 54 20 00 D4 48 45 4E 20 00 54 48 45 20 00 54 48 45 59 20 43 41 4D
45 20 00 46 4F 52 20 00 53 50 45 41 4B 20 00 41 4E 44 20 C9 20 44 49 44 20 4E
4F 54 20 00 4F 55 54 2D 0D 00 C2 45 43 41 55 53 45 20 C9 20 57 41 53 20 4E 4F
54 20 41 20 00 4D 45 2D 41 4E 44 20 54 48 45 52 45 20 57 41 53 20 4E 4F 20 4F
4E 45 20 4C 45 46 54 20 54 4F 20 00 4D 45 2E 00 2E 0D 00 53 2C 20 00 D3 4F 43
49 41 4C 49 53 54 00 D4 52 41 44 45 20 D5 4E 49 4F 4E 49 53 54 00 CA 45 57 00
0D 00 8C 35 3A 6B 2A 1F B4 90 B0 56 50 3A 41 93 B0 25 35 2A 1F B4 90 A1 56 50
3A 41 93 A1 25 35 2A 1F B4 90 97 56 50 3A 41 93 97 25 35 2A 18

Демонстрація в Інтернеті

Використання: SYS49152

Пояснення:

Оскільки це містить в основному дані, а не безглуздий перелік розбирань, ось ca65джерело збірки -style, яке створює цей машинний код:

.segment "LDADDR"
                .word   $c000           ; load address
.code
                lda     #$17            ; upper/lower mode
                sta     $d018           ; store in VIC register
                ldx     #revpoemsize    ; initialize ...
                stx     $fe             ; ... counter
loop:           ldx     $fe             ; load current position
                ldy     #$c0            ; highbyte of strings always same
                lda     revpoem,x       ; load lowbyte from table
                jsr     $ab1e           ; output 0-terminated string
                dec     $fe             ; decrement position
                bpl     loop            ; >=0 ? -> repeat
                rts                     ; done

first:          .byte   "First ", 0
then:           .byte   "Then ", 0
the:            .byte   "the ", 0
came:           .byte   "they came ", 0
for:            .byte   "for ", 0
speak:          .byte   "speak ", 0
didnot:         .byte   "and I did not ", 0
out:            .byte   "out-", $d, 0
wasnot:         .byte   "Because I was not a ", 0
noone:          .byte   "me-and there was no one left to ", 0
me:             .byte   "me.", 0
period:         .byte   ".", $d, 0
comma:          .byte   "s, ", 0
socialist:      .byte   "Socialist", 0
unionist:       .byte   "Trade Unionist", 0
jew:            .byte   "Jew", 0
p:              .byte   $d, 0

revpoem:        .byte   <me, <for, <speak, <noone, <came, <then, <p
                .byte   <period, <jew, <wasnot, <out, <speak, <didnot
                .byte   <comma, <jew, <the, <for, <came, <then, <p, <period
                .byte   <unionist, <wasnot, <out, <speak, <didnot, <comma
                .byte   <unionist, <the, <for, <came, <then, <p, <period
                .byte   <socialist, <wasnot, <out, <speak, <didnot, <comma
                .byte   <socialist, <the, <for, <came, <first
revpoemsize     = * - revpoem - 1

6

Python 3 , 209 байт

t='they came for '
s='First '
for i in'Socialist','Trade Unionist','Jew':s+=t+f'the {i}s, and I did not speak out-\nBecause I was not a {i}.\n\nThen '
print(s+t+'me-and there was no one left to speak for me.')

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

-5 завдяки Феліпе Нарді Батісті .


@Heiteira Вибачте, але я не можу залишити частину "Торгівлі" поза результатами.
Erik the Outgolfer


4

Perl 5 , 185 байт

print join" they came for ",First,(map"the ${_}s, and I did not speak out-
Because I was not a $_.

Then",Socialist,"Trade Unionist",Jew),"me-and there was no one left to speak for me."

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

Завдяки @ Massa за -3 байти!


Використовуйте Приєднуйтесь, і ви можете обрізати ще п’ять стільців або близько того
Масса,

@Massa не впевнений, я бачу як! Будь-які підказки?
Дом Гастінгс

Я зараз на своєму мобільному, але подивіться на мою відповідь perl6 нижче!
Масса

@Massa Ahhh, приємно! Спасибі! -3 врешті-решт :)
Дом Гастінгс

3

C, 248 байт

Завдяки @ Zacharý за збереження 9 байт.

p(x,y){printf("%s they came for the %ss, and I did not speak out-\nBecause I was not a %s.\n\n",x,y,y);}f(){p("First","Socialist");p("Then","Trade Unionist");p("Then","Jew");puts("Then they came for me-and there was no one left to speak for me.");}

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


Чи можете ви перейти sбезпосередньо до printfзаяви?
Zacharý

@ Zacharý Так, звичайно.
Steadybox

3

C # (.NET Core) , 248 246 242 байт

a=>{string b=@", and I did not speak out-
Because I was not a ",c=" they came for ",d="Socialist",e="Trade Unionist";return$@"First{c+d}s{b+d}.

Then{c+e}s{b+e}.

Then{c}the Jews{b}Jew.

Then{c}me-and there was no one left to speak for me.";}

Фактичні нові рядки заощадили мені кілька байт.

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

Збережено 2 байти завдяки Business Cat



3

Befunge-93 , 348 байт

".em rof kaeps ot tfel eno on saw ereht dna-em rof emac yeht nehT"52*:v
v"d not speak out-"*25"Because I was not a "<   p5-2*89p1-2*89"vvJew."<
> "id I dna ">",sweJ>v"67+2p66+5p     v     ^p2-2*89"vTrade Unionist."<
>"tsriF">:#,v>",stsinoinU edarTv"67+3pv     ^   p3+66p40"^_Socialist."<
>"nehT"52*: v>",stsilaicoS@"67+3p     >" eht rof emac yeht "

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


3

Befunge, 293 274 270 байт

62574732594932584832001v_@#:\0\!<
0-*84g+3/"P"\%"P"::+p00<_|#:-1g0
84!-"*":g+3/"P"\%"P"::+1\<+1_$#:^#-2\,-**
&First0 they came for %the Qs, and I did not speak out-*Because I was not a (.**
ThenOme-and there was no one left to speak for me.*$Jew*Socialist/Trade Unionist

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

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


2

Сітківка , 176 байт


 Socialists, Trade Unionists, Jews,1me-and there was no one left to2for me.
( .+?)s,
1the$& and I did not2out-¶Because I was not a$1.¶¶Then
^
First
1
 they came for 
2
 speak 

Спробуйте в Інтернеті! Пояснення: 1і 2є лише повторювані рядки, які є досить довгими, щоб їх варто було б подвоїти. Пізніше Firstдодається, щоб полегшити вибір заповнювача для повторюваної частини, "вони прийшли для [групи], і я не говорив, тому що я не був [групою]. Потім", який розширюється на другий етап.


2

JavaScript (ES6), 231 227 223 221 байт

_=>`First${t=" they came for "}the Socialist${a=`s, and I did not speak out-
Because I was not a `}Socialist${t=`.

Then`+t}the ${(u="Trade Unionist")+a+u+t}the Jew${a}Jew${t}me-and there was no one left to speak for me.`

Спробуй це

o.innerText=(
_=>`First${t=" they came for "}the Socialist${a=`s, and I did not speak out-
Because I was not a `}Socialist${t=`.

Then`+t}the ${(u="Trade Unionist")+a+u+t}the Jew${a}Jew${t}me-and there was no one left to speak for me.`
)()
<pre id=o>



2

JavaScript (ES6), 210 207 206 203 байт

Інший підхід до мого іншого рішення настільки зрозумів, що варто відредагувати його на власну відповідь зараз, коли завдання було відновлено.

_=>`First${["Socialist","Trade Unionist","Jew"].map(x=>t+`the ${x}s, and I did not speak out-
Because I was not a ${x}.

Then`,t=` they came for `).join``+t}me-and there was no one left to speak for me.`

Спробуй це

o.innerText=(
_=>`First${["Socialist","Trade Unionist","Jew"].map(x=>t+`the ${x}s, and I did not speak out-
Because I was not a ${x}.

Then`,t=` they came for `).join``+t}me-and there was no one left to speak for me.`
)()
<pre id=o>


2

Гая , 179 175 байт

⇓“the ”3ṁ“s, and I did not speak out-¶Because I was not a ”2ṃ“.¶¶Then
“ they came for 
First”“Socialist“Trade Unionist“Jew”↓¦⇑“me-and there was no one left to speak for me.”]$

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

Пояснення

Тут визначено 3 функції (1 на рядок). Нижня називається першою. замінюється новими рядками.

⇓“the ”3ṁ“...”2ṃ“.¶¶Then  First helper function. Argument: s
⇓                         Push "Then they came for "
 “the ”                   Push "the "
       3ṁ                 Bring s to the top
         “...”            Push "s, and I did not speak out-¶Because I was not a "
              2ṃ          Push a copy of s
                “.¶¶Then  Push ".¶¶Then"


“ they came for   Helper function. No arguments.
“ they came for   Push " they came for "


First”“..“..“..”↓¦⇑“...”]$  Main function.
First”                      Push "First"
      “..“..“..”            Push the list ["Socialist" "Trade Unionist" "Jew"]
                ↓¦          Call the first helper function on each.
                  ⇑         Push "Then they came for "
                   “...”    Push "me-and there was no one left to speak for me."
                        ]$  Wrap the stack in a list and join with no separator.

2

Bubblegum , 149 132 129 байт

00000000: 9d4d b515 0241 14cc af8a c991 1e70 0991  .M...A.......p..
00000010: 02fe bbfd e7b7 cb1a 523d ee0e d9f8 7453  ........R=....tS
00000020: 631d 5cc2 2b84 5432 2265 760c 6315 a654  c.\.+.T2"ev.c..T
00000030: a4d6 d92a 480a 0c20 5201 a91c ec8c 2987  ...*H.. R.....).
00000040: f2ae 1634 3924 6f79 6b2e c8ee 4dba 14eb  ...49$oyk...M...
00000050: 4130 4958 3ed9 9e18 128c a94c 95fc e3e0  A0IX>......L....
00000060: b6fd fa65 c88b 1fa7 7795 e77b 25d7 488a  ...e....w..{%.H.
00000070: 9d68 f898 8792 8c82 2307 a78e bb87 647d  .h......#.....d}
00000080: 03                                       .

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

Нудна відповідь Bubblegum. Вже побили SOGL, так що це добре.

Кредит на -17 байт припадає на Dom Hastings

-3 байти ов


132 байти . Все ще не можна перемогти SOGL!
Дом Гастінгс

@DomHastings Я не думаю, що ти ніколи не будеш бити SOGL з Bubblegum ...
Ерік the Outgolfer

@EriktheOutgolfer Я також дуже радий цьому факту! Я хотів би вкласти трохи часу, щоб пограти з цим, неймовірно виразним!
Дом Гастінгс


2

SQL 269 байт

declare @ char(18)='They came for the ',@a char(49)='s, and I did not speak out-
Because I was not a '
print'First '+@+'Socialist'+@a+'Socialist.

'+@+'Trade Unionist'+@a+'Trade Unionist.

'+@+'Jew'+@a+'Jew.

'+@+' me-and there was no one left to speak for me.'

1
Привіт, Ласкаво просимо до PPCG! Я відредагував вашу публікацію, щоб додати деяке форматування. Що стосується власне коду, то я думаю, що провідні слова "Then "відсутні в останніх трьох реченнях, а останнє речення тепер зазначено "They came for the me-..."замість "Then they came for me-...".
Кевін Круїссен

2

PowerShell, 211 202 198 байт

-13 байт завдяки @Veskah

$a,$b='First',' they came for'
'Socialist','Trade Unionist','Jew'|%{"$a$b the $_`s, and I did not speak out-
Because I was not a $_.
";$a='Then'}
"$a$b me-and there was no one left to speak for me."

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

Я впевнений, що це можна трохи пограти в гольф.





1

Python 2, 246 байт

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

import zlib,base64
print zlib.decompress(base64.b64decode('eJyd0DEOwjAMBdA9p/gHoD0EAxJdgQNYiatGtDaKU1XcvikUdSkDjLb/f4NPMVlG7vgJTwOj1bRMuKiP1EfLdgBJwBkhBohm2IPpDh1z5Y7saTQux4nsdaStWDt37Vh27JtElT/oT++73PD0K1oq+97A1QKVZeI1DxVGz215mK7uO1nPf1Zu5g=='))

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





1

Пітон 3 , 208 байт

print(' they came for '.join(["First"]+[f"the {i}s, and I did not speak out-\nBecause I was not a {i}.\n\nThen"for i in['Socialist','Trade Unionist','Jew']]+['me-and there was no one left to speak for me.']))

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

-1 завдяки @Step Hen


1
Then "for-> Then"forі ти б'єш інші відповіді Python :)
Stephen

@StepHen Дякуємо, що помітили додатковий простір! :-)
Масса

1

Clojure, 285 байт

(fn[](doseq[i(range 4):let[c["Socialist""Trade Unionist""Jew"""]f #(if(< i 3)% %2)]](println(if(= i 0)"First""Then")"they came for"(str(f(str"the "(c i)"s, ")"me-")(f"and I did not speak out-\n""and there was no one left to speak for me.")(f(str"Because I was not a "(c i)".\n")"")))))

Це було веселим маленьким викликом. Я закінчила майже повністю переписування більшості з них пару разів, тому що зрозуміла, що роблю щось надто кругле. Є ще пара областей, які, ймовірно, можна було б торкнутися, але я дуже задоволений тим, як це вийшло, навіть якщо я лише "стискаю" оригінал на 54 байти.

repl.io

Дивіться попередній код для гольфу для пояснення:

(defn ftc []
  ; Loop over the lines numbers for reference
  (doseq [i (range 4)
          :let [; Added a dummy last "class" since "me-" wasn't necessary,
                ;  and only having 3 elements was causing OOB errors.
                classes ["Socialist" "Trade Unionist" "Jew" ""]

                ; A helper function that executes either its first or second argument
                ;  depending on if the current line is one of the first 3 lines.
                if-first-three-lines #(if (< i 3) % %2)]]

    ; An implicit space is inserted between each of the args to println
    (println
      ; Decide on the opener
      (if (= i 0) "First" "Then")

      "they came for"

      ; Start string concatenation because the implicit space
      ;  begins complicating things.
      (str
        ; Decide which "class" the line belongs to
        (if-first-three-lines
          (str "the " (classes i) "s, ")
          "me-")

        ; Decide on the line ending
        (if-first-three-lines
          "and I did not speak out-\n"
          "and there was no one left to speak for me.")

        ; Then pick the trailer
        (if-first-three-lines
          (str "Because I was not a " (classes i) ".\n")
          "")))))


1

05AB1E , 124 119 байт

.•RYÁ Wö∍®Ø’áÅÚ)’Òü•'x¡™vy„€Û‚½#NĀ虓ÿ€»‹é€‡€€ ÿs,€ƒ Iƒ§€–¡´€Ä-“©¶y“ƒ« I€¥€–€… ÿ.“.ª¶¶}®19£“€á-and€Ç€¥€¸€µ…¸€„¡´€‡€á.“J

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

Пояснення:

.•RYÁ Wö∍®Ø’áÅÚ)’Òü•
                  # Push compressed string "socialistxtrade unionistxjew"
 'x¡             '# Split it on "x": ["socialist","trade unionist","jew"]
                 # Convert each word to Titlecase: ["Socialist","Trade Unionist","Jew"]
v                 # Loop `y` over each of these strings:
 y                #  Push string `y`
 „€Û‚½            #  Push dictionary string "first then"
      #           #  Split on spaces: ["first","then"]
       N          #  Push the index of the loop
        Ā         #  Truthify it (0 remains 0; every other number becomes 1)
         è        #  Use it to index into the list
                 #  Titlecase it
 “ÿ€»‹é€‡€€ ÿs,€ƒ Iƒ§€–¡´€Ä-“
                  #  Push dictionary string "ÿ they came for the ÿs, and I did not speak out-"
                  #  where the "ÿ" are automatically filled with the strings at the top of the stack
  ©               #  Save it in the register (without popping)
                 #  Push a newline "\n"
 y                #  Push string `y` again
 “ƒ« I€¥€–€… ÿ.“  #  Push dictionary string "because I was not a ÿ."
                  #  where the "ÿ" is automatically filled again with the string
                #  Sentence case it: "because" becomes "Because"
 ¶¶               #  Push two newline characters "\n\n"
}                 # After the loop:
®                 # Push the string from the register:
                  #  "Then they came for the Jews, and I did not speak out-"
 19£              # Only leave the first 19 characters: "Then they came for "
“€á-and€Ç€¥€¸€µ…¸€„¡´€‡€á.“
                  # Push dictionary string "me-and there was no one left to speak for me."
J                 # Then join everything on the stack together (and output implicitly)

Ознайомтесь із цією підказкою 05AB1E (розділи Як користуватися словником? Та як стискати рядки, що не входять до словника? ), Щоб зрозуміти, чому:

  • .•RYÁ Wö∍®Ø’áÅÚ)’Òü• є "socialistxtrade unionistxjew"
  • „€Û‚½ є "first then"
  • “ÿ€»‹é€‡€€ ÿs,€ƒ Iƒ§€–¡´€Ä-“ є "ÿ they came for the ÿs, and I did not speak out-"
  • “ƒ« I€¥€–€… ÿ.“ є "because I was not a ÿ."
  • “€á-and€Ç€¥€¸€µ…¸€„¡´€‡€á.“ є "me-and there was no one left to speak for me."

-4

Текст , 348 байт

First they came for the Socialists, and I did not speak out-
Because I was not a Socialist.

Then they came for the Trade Unionists, and I did not speak out-
Because I was not a Trade Unionist.

Then they came for the Jews, and I did not speak out-
Because I was not a Jew.

Then they came for me-and there was no one left to speak for me.

Це найкоротша можлива версія її мовою, і вона відповідає рівню відповіді Befunge-93 під час написання.


2
Як і майже всі відповіді "Тексту", це і нудно і ліниво
Jo King

@Jo King Примітним бітом є те, що він такої ж довжини, як і відповідь Befunge-93.
IFcoltransG
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.