Opis
Oto bardzo przesądna winda hotelowa w Szanghaju:
Unika liczby 13, ponieważ trzynaście nie ma szczęścia w świecie zachodnim, a unika cyfry 4, ponieważ cztery mają pecha w niektórych częściach Azji. Co jeśli ten hotel był wyższy?
Przeczytaj dodatnią liczbę całkowitą dodatnią n
ze STDIN, reprezentującą liczbę pięter, i wydrukuj, jak wyglądałby układ przycisku STDOUT:, -1
a następnie kolejne n-1
dodatnie liczby całkowite, które nie są równe 13 i nie zawierają cyfry 4. Ułóż je liczby w dwóch kolumnach, jak na powyższym obrazku: wydrukuj dwie liczby pięter w linii, oddzielone poziomą tabulacją, tak że czytanie linii w odwrotnej kolejności od lewej do prawej daje sekwencję rosnącą. (Opcjonalnie możesz również wydrukować końcowy znak nowego wiersza).
Przypadki testowe
Dane wejściowe 14
powinny wyglądać jak na powyższym obrazku:
15 16
11 12
9 10
7 8
5 6
2 3
-1 1
gdzie biały znak w każdej linii jest pojedynczym poziomym znakiem tabulacji.
Jako dane wejściowe 2
powinieneś wydrukować -1 1
.
Jako dane wejściowe 100
należy wydrukować:
120 121
118 119
116 117
113 115
111 112
109 110
107 108
105 106
102 103
100 101
98 99
96 97
93 95
91 92
89 90
87 88
85 86
82 83
80 81
78 79
76 77
73 75
71 72
69 70
67 68
65 66
62 63
60 61
58 59
56 57
53 55
51 52
39 50
37 38
35 36
32 33
30 31
28 29
26 27
23 25
21 22
19 20
17 18
15 16
11 12
9 10
7 8
5 6
2 3
-1 1
Cel
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
Odpowiedzi:
Pyth, 27 bajtów
Wypróbuj online tutaj .
Pobiera
.f
irstQ-1
numery, które pasują do filtra!=13
i4
nie znajduje się w ciąg znaków numeru. Następnie-1
łączy, przecina na pół, łączy każdy za pomocą tabs (C9
) i łączy za pomocą nowego wiersza.źródło
Bash + wspólne narzędzia, 51
seq
generuje rosnące liczby całkowite od 1 do N z dodatkowymi 9 cyframi z przodu - więcej niż wystarcza na wejście 64-bitowe liczby całkowitesed
odfiltrowuje pechowe podłogi i wstawki-1
przed linią 1rs
przekształca się w dwie kolumny oddzielone tabulatoramised
zatrzymuje się po linii N / 2tac
odwraca kolejność linii wyjściowychźródło
sed $[$1/2]q
pors
zsed $1q
przed nim. Myślę, że dzięki temu jest również kompatybilny z powłoką POSIX.1
nie wystarczy, aby zrekompensować przekazanie tylko 0,9 ^ n danych wejściowych (liczby nie zawierające4
get sparser i sparser wraz ze wzrostem liczby cyfr). Ale kiedy już będziesz mieć w hotelu ponad kilkaset milionów pięter, prawdopodobnie będziesz mieć inne problemy, takie jak utrzymanie pracy kanalizacji i organizacja rotas dla personelu.$[]
arytmetykę powłoki . Myślę, że jest to rozsądne ograniczenie w przypadku braku wyraźnej wzmianki o arytmetyki arbitralnej precyzji w pytaniu. Niezależnie od tego, teraz prefiksuję9
zamiast1
, żeby być po bezpiecznej stronie.JavaScript ES6,
236234233210195188 bajtówZaoszczędziliśmy całą masę bajtów dzięki usandfriends!
Wykorzystuje
function*
generatory. Prawdopodobnie jest to krótszy sposób, ale było fajnie. Dobra zabawa. Założę się, że można grać w golfa. Te dziwne białe znaki to zakładki.źródło
z=+prompt(i=x=0,l=[]);
==>z=prompt(i=x=0,l=[]);
(-1 bajt).join
tabulatorem i zamień spację/-?\d+ \d+/g
tabulatorem, usuń.map(x=>x.replace(/ /,"\t"))
(powinien zaoszczędzić 23 bajty).filter(x=>x!=".0")
==>.filter(x=>+x)
, (-5 bajtów).filter(..)
część! Spróbujl.push(a);
==>+a&&l.push(a);
(-15 bajtów)C, 282 bajtów
Sformatowany:
Cechy :
Może obliczyć do 2095984 pięter, jeśli każde piętro jest
19.5m
wysokie ( łącznie z sufitem), wówczas ten budynek jest wystarczająco długi, aby można go było owinąć wokół równika!2095984*19.5=40871688m=~40000km=one 'lap' around the planet
.źródło
while
można przekonwertować,for
a to pozwala upuścić kilka nawiasów klamrowych.t/=10
jest bajtem krótszym niżt=t/10
. Dodaj 1 do c w swojejfor
pętli, aby zapisać kilka bajtów ->a[c+1]
staje sięa[c]
, podczas gdy wszystkie inne liczby mają tę samą długość. Połączyłem też dwaprintf
s razem w pętli i ponownie upuściłem kręcone szelki.Julia,
134132 bajtyTa śmieszna biała spacja to dosłowna zakładka. Jak zauważył Conor O'Brien, jest to bajt krótszy niż działanie
\t
.Nie golfowany:
źródło
Python 2,
120110 bajtówźródło
i-13
zamiasti!=13
JavaScript, 116
122Edytuj Zapisane 6 bajtów dzięki @Neil
Proste rozwiązanie tablicowe - nawet bez użycia ES6
Spróbuj w dowolnej przeglądarce
źródło
!/4/.test(v)
.' '
zamiast'\t'
(literał)Python 2 , 94 bajty
Wypróbuj online!
W ciągu znajduje się znak tabulacji, którego SE nie renderuje (dzięki Sp3000 za sugerowane użycie go, zapisanie bajtu).
Testuje podłogi,
c
zaczynając od podłogi-1
aż do osiągnięcia limitun
pięter. Dla każdego piętra należy sprawdzić, czy nie zawiera on4
ani równa się,0
ani13
. Jeśli tak, dołącza go do ciągu windys
i zmniejsza limitn
.Trik z formatowaniem ciągów jest używany, aby dwa piętra w kolumnie pojawiały się w odpowiedniej kolejności po dodaniu. Każda nowa linia jest przygotowana w
'%d\t%%d\n'
taki sposób, aby po zmianie dwóch pięter w kolejności pierwsza znajdowała się po lewej, a druga po prawej. Na przykład,źródło
\t
. Ach, dni przed istnieniem TIO.C #, 296 bajtów
Nie golfowany:
Zastosowane sztuczki golfowe:
j+""
zamiastj.ToString()
namespace System.Collections.Generic
nie tylko, abyśmy mieli dostępList<T>
, ale także domyślnie użyj przestrzeni nazwSystem
bez dalszych kwalifikacjiusing
wnętrze przestrzeni nazw, abyśmy mogli pisaćusing Linq;
zamiastusing System.Linq;
.Insert(0,j)
jest krótszy niż użycie,.Add(j)
a później zastosowanie.Reverse()
Szkoda, że
using Linq;
jest to konieczne, ponieważ jest potrzebne tylko do.Zip
pisania, aleLinq.Enumerable.Zip()
jest dłuższe.źródło
Ruby 2.3,
8483 znaków(Kod 82 znaków + opcja wiersza poleceń 1 znak)
Przykładowy przebieg:
Ruby,
9392 znaków(Kod 91 znaków + opcja wiersza poleceń 1 znak)
Przykładowy przebieg:
źródło
Lua, 169 bajtów
Dość prosto, najpierw montujemy tabelę wypełnioną wszystkimi wartościami przycisków. Następnie iterujemy ją wstecz, wypisując dwie wartości na raz, lub nic, jeśli druga wartość nie istnieje.
źródło
Mathematica, 105 bajtów
Zamień na
\t
rzeczywisty znak tabulacji.źródło
Brachylog , 105 bajtów
Byłoby o wiele krótsze z obsługą CLPFD, tutaj muszę iteracyjnie wypróbować liczby całkowite w pierwszym predykacie podrzędnym.
Nowa wcześniejsza linia
"w,?bb:2&}
jest obowiązkowa, jest to nowa linia drukowana między każdym rzędem.źródło
C #
277343Jest to tylko funkcja. Jestem nowy w C #. Zwiększenie miało obowiązywać dla 40-49 i dla włączenia
using
sUngolfed, jako kompletny uruchomiony program:
Wyjaśniono
Tworzę dwie listy i na przemian pcham do nich, odwracam je, przeglądam jedną i chwytam drugą za pomocą indeksu.
źródło
if(s==1)
przezif(s)
(automatyczne obsadą od int do boolean?)Python 3, 155 bajtów
Myślę, że listowanie, cofanie i samozamykanie generatora numerów podłogowych
s()
może być zbyt sprytne dla własnego dobra, ale inni już zrobili alternatywę (wyskakiwanie dwóch elementów jednocześnie), nie wspominając już o użyciu Pythona 2, który oszczędza bajty w niektórych kluczowych punktach.Krótsza, ale już zrobiona, lepsza alternatywa zajmuje 140 bajtów.
źródło
(0!=n!=13)!=('4'in str(n))
jest 5 bajtów krótszy niżnot(n in(0,13)or'4'in str(n))
.Japt, 42 bajty
Cztery spacje powinny być rzeczywistym znakiem tabulacji. Wypróbuj online!
Jak to działa
źródło
Lua, 141 bajtów
Nie golfił
Wypróbuj online (musisz wpisać „wykonaj” u góry, a następnie kliknij terminal u dołu przed wpisaniem danych wejściowych; Szukam lepszego sposobu na przetestowanie lua online za pomocą stdin i stdout)
źródło
05AB1E ,
252322 bajtów-1 bajt dzięki tylko @ ASCII
Wypróbuj online!
Wyjaśnienie
źródło
0 13ª
część uczynić nieco lepszą. Dzięki!ʒ4å_}
na4мïê
. PS: na podstawie twojego wcześniejszego komentarza:0 13ª
mogło być¾13ª
również.C ++ 11,
259258203202195194 bajtówZmniejszono 1 bajt, dzięki pomysłowi Conora O'Briena, aby zamiast liter używać tabulacji dosłownej
\t
.UPD 2: zmniejszono 55 bajtów z ulepszoną logiką i nadużywaniem przecinków.
UPD 3: kolejny bajt wyłączony dzięki ceilingcat.
UPD 4: 7 bajtów dzięki uprzejmości pułapu kota.
UPD 5: i kolejny bajt wyłączony przez ceilingcat.
Cieszę się, że wszystko zawiera w miejscu ORAZ wciąż pokonuję rozwiązania C i C #.
Nie golfowany:
źródło
iostream
zawierastring
, więc możesz pominąć drugą opcję, aby znacznie zmniejszyć liczbę bajtów :)Java, 333 bajtów
Dodaje dozwolone numery pięter do stosu, a następnie odsuwa je, aby je wydrukować.
Bawiłem się za pomocą IntStream, ale przy wszystkich importach ten okazał się mniejszy.
źródło
Scala 147
źródło
Python 3, 117 bajtów
Zmodyfikowana wersja postu python 2, aby pasowała do specyfikacji python 3.
źródło
PowerShell, 106
107bajtówNie golfił
Przykład
źródło
Haskell 202 bajty
Jestem początkującym haskell…
źródło
by2
, używając nazwy 1-znakowej i zmiany kolejności: użyj ostatniego wiersza bez zmian, a potemb x = [x]
po.JavaScript ES6 114 bajtów
Stosowanie
f (100);
źródło
Perl 6 , 73 bajtów
Zakłada parzystą liczbę pięter, ponieważ wydaje się, że opis problemu również ją zakłada i co najmniej jedno inne dostarczone rozwiązanie psuje się dla nieparzystej liczby pięter. Po prostu dodaj
,:partial
jako drugi argument do jeszczerotor
dziewięciu bajtów, aby obsługiwać nieparzystą liczbę pięter.źródło
Galaretka , 20 bajtów
Wypróbuj online!
W jaki sposób?
źródło
JavaScript (ES6),
151146Zrobiłem to, zanim zdałem sobie sprawę, że edc65 jest już krótszy. No cóż!
źródło
R , 106 bajtów
Wypróbuj online!
c("\t","\n")
\t
źródło
APL (Dyalog) , 34 bajty
Wypróbuj online!
źródło