Сначала они пришли


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
Мне не нравится, когда здесь стучат рикроллы.
programmer5000


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 Извините, но я не могу оставить часть "Торговля" вне вывода.
Эрик 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."

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

Спасибо @ Массе за -3 байта!


Используйте Join, и вы можете подрезать еще пять стульев или около того
Massa

@Масса не уверена, что вижу, как! Есть еще подсказки?
Дом Гастингс

Я сейчас на своем мобильном, но взгляните на мой ответ perl6 ниже!
Масса

@ Масса Ааа, хорошо! Благодарность! -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ý Да, конечно.
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

Gaia , 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

Жевательная резинка , 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 байт достается Дому Гастингсу

-3 байта ов


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

@DomHastings Я не думаю, что вы когда-нибудь победите SOGL с Bubblegum ...
Эрик 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 байт благодаря @ Веске

$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

PHP, 194 байта

First<?=$t=" they came for ";foreach([Socialist,"Trade Unionist",Jew]as$s)echo"the ${s}s, and I did not speak out-
Because I was not a $s.

Then$t"?>me-and there was no one left to speak for me.

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


1

C (gcc) , 244 байта

f(c){for(c=0;c<3;printf("%s they came for the %ss, and I did not speak out-\nBecause I was not a %2$s.\n\n",c++?"Then":"First",c^2?c?"Trade Unionist":"Socialist":"Jew"));puts("Then they came for me-and there was no one left to speak for me.");}

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


1

Python 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и вы
Стивен

@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 Примечательным является то, что он такой же длины, как и ответ Befunge-93.
IFcoltransG
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.