Na scenie otwierającej Mroczny Rycerz dochodzi do dość niezręcznego dialogu między agentem CIA a złoczyńcą Bane.
Agent CIA: „Jeśli zdejmę tę [maskę], umrzesz?”
Bane: „Byłoby niezwykle bolesne…”
Agent CIA: „Jesteś dużym facetem”.
Bane: „… dla ciebie.”
Nie jest pewne, czy Bane zamierza powiedzieć „bolesny dla ciebie” czy „duży facet dla ciebie”. Rozwiązujmy ten problem raz na zawsze dzięki grze w golfa kodu!
Wyzwanie
Twoim zadaniem jest napisanie programu, który zmieni kolejność powyższego dialogu w zależności od liczby całkowitej podanej jako dane wejściowe.
Słowa dialogu agenta CIA to:
If
I
pull
that
off
will
you
die?
You're
a
big
guy.
Dialog Bane'a to:
It
would
be
extremely
painful...
for
you!
Należy pamiętać, że die?
, You’re
, painful...
i you!
są traktowane jako pojedyncze słowa.
- Biorąc pod uwagę liczbę całkowitą n jako dane wejściowe, przekonwertuj ją na wartość binarną
- Odczytując cyfry binarne od lewej do prawej, wypisz następne słowo z dialogu agenta CIA, jeśli cyfra jest
1
, i następne słowo z dialogu Bane'a, jeśli cyfra jest0
. Słowa powinny być oddzielone spacją. Gdy głośnik się zmieni, dodaj linię. Ponadto każdą linię dialogową poprzedź nazwą głośnika (BANE:
lubCIA:
).
Możesz założyć, że dane wejściowe zawsze zaczynają się od 1 w postaci binarnej i mają 12 jedynek i 7 zer.
Przykład
522300
Przekształcony na binarny:
1111111100000111100
Liczba zaczyna się od 8, więc wypisujemy 8 pierwszych słów z dialogu agenta CIA i poprzedzamy je CIA:
CIA: If I pull that off will you die?
Następnie mamy 5 zer, więc otrzymujemy 5 pierwszych słów z dialogu Bane'a:
BANE: It would be extremely painful...
Potem są 4, więc wyprowadzamy 4 kolejne słowa CIA:
CIA: You’re a big guy.
Następnie 2 zera:
BANE: for you!
Ostateczny wynik:
CIA: If I pull that off will you die?
BANE: It would be extremely painful...
CIA: You’re a big guy.
BANE: for you!
Więcej przypadków testowych:
494542
CIA: If I pull that
BANE: It would be
CIA: off
BANE: extremely
CIA: will you die? You're
BANE: painful... for
CIA: a big guy.
BANE: you!
326711
CIA: If
BANE: It would
CIA: I pull that off will you
BANE: be extremely painful... for
CIA: die? You're
BANE: you!
CIA: a big guy.
Odpowiedzi:
Pyth - 138 bajtów
Powinienem zająć się kompresowaniem scenariusza filmowego.
Pakiet testowy .
źródło
JavaScript (ES6),
203201 bajtówEdycja: zapisano 2 bajty, bezwstydnie pożyczając
trim()
pomysł od odpowiedzi ETHproductionsPrzypadki testowe
Pokaż fragment kodu
źródło
JavaScript (ES6),
209202201 bajtówStare podejście:
Testowy fragment kodu
źródło
trim()
pomysł. Byłem pewien, że jest coś lepszego niż,slice(1)
ale nie mogłem tego pojąć.C ++ 11 (GCC),
298293 bajtówFunkcja lambda, która przyjmuje liczbę całkowitą i zwraca dialog jako
std::string
. Możesz to zobaczyć tutaj w akcji .Wersja bez golfa (z pewnym wyjaśnieniem):
źródło
JavaScript (ES6),
252 227226 bajtówStosowanie
Notatki
Trwa gra w golfa, myślę, że wciąż mogę trochę wygolić, ale zostaw komentarz w komentarzach.
źródło
Python 3.6, 232 bajty
Edytuj , równoważnie:
źródło
Japt, 121 bajtów
Zawiera wiele niedrukowalnych elementów, dlatego lepiej byłoby przetestować go online .
źródło
Perl 6 , 211 bajtów
źródło
C #,
398390385396389 bajtówUruchom z numerem wejściowym jako parametrem.
Nie golfowany:
Wróć do 396 bajtów, ponieważ nie zauważyłem reguły „brak nowej linii na początku”.
źródło
s.Replace("1",c[k++]).Replace("0",b[l++])
nie zastępuje się odpowiednimi słowami. Wygląda na to, że C # raz zamienia ciąg i uderza go miejscami.Rubinowy, 204 + 1 = 205 bajtów
Wymaga
-n
flagi.źródło
PHP, 198 bajtów
źródło
Perl, 205 bajtów
Umieść to w pliku o nazwie 494542 i uruchom tak:
Testowane na perlu v5.22
źródło
Clojure, 401 bajtów
Wezwanie:
Bez golfa
źródło