Wyzwanie
W tym zadaniu musisz napisać program, który przyjmie wprowadzanie liczby całkowitej N (-1e9 <= N <0 i& 0 <N <= + 1e9) , a następnie oblicz T = (abs (N)% M + 1) , jeśli N jest dodatnie, a następnie wypisuje T-ty znak od początku, w przeciwnym razie wypisuje T-ty znak od końca źródła.
M to rozmiar twojego źródła w bajtach.
Przykład: jeśli źródłem jest:abcd efg/hi
Wejście:
2
Wynik:
c
Wejście :
-3
Wynik:
g
Wejście :
-9249678
Wynik:
b
Wejście :
-11
Wynik:
i
Ograniczenia
- Nie używaj żadnej operacji PLIKU
- Możesz użyć dowolnego wybranego języka
- Staraj się unikać, a raczej nie używaj przesyłania 1-bajtowego, ponieważ psuje to całą zabawę.
- Najkrótsze rozwiązanie wygrywa!
EDYCJA: Opis problemu został zmodyfikowany, aby można było oceniać rozwiązania na podstawie losowych danych testowych (i tych samych danych dla wszystkich rozwiązań), dlatego należy odpowiednio zaktualizować swoje rozwiązanie, przepraszamy za niedogodności (jeśli występują).
-2 -> /
-1 -> h
0 -> i
1 -> b
2 -> c
. Ale przynajmniej mapowanie jest teraz jednomyślne.&&
w pierwszym zdaniu ma być||
?Odpowiedzi:
Zestaw x86 (32-bitowy system Linux, składnia AT&T): 548
Brak nowego wiersza na końcu pliku:
Kompilowałem to
gcc -nostartfiles -m32 qc1.S -o qc1
Weryfikacja, liczby dodatnie:
Weryfikacja, liczby ujemne:
Edycja ma rację co do dziwnego schematu numeracji. Myślę. Nie zmieniło długości.
źródło
Co wiesz, HQ9 + powraca!
Nie ma potrzeby zawracać sobie głowy indeksowaniem, gdy jest tylko jedna postać do wyboru!
źródło
echo '-1' | hq9+ qc1
Ruby 1.9, 66 znaków
Właściwie nie ma dużej różnicy w stosunku do normalnego quine.
źródło
GolfScript 26 znaków
Quines były bardziej zabawne przed wynalezieniem dynamicznych języków.
Edycja: Dla whinerów, tutaj jest „prawdziwa” Quine GolfScript, no` i ~ używane tylko do analizowania danych wejściowych.
Handicapped GolfScript 44 znaki
Zauważ, jak ładnie jest to ten sam ciąg powtórzony dwa razy, więc dosłowny ciąg potrzebuje tylko
'
zhakowanego przed nim i jest gotowy do użycia.źródło
Quines were more fun before the invention of dynamic languages.
:-)Lenguage, 4 bajty
Kod źródłowy składa się z 4 bajtów zerowych. Niezależnie od danych wejściowych, wynik powinien być bajtem zerowym, co jest osiągane za pomocą jednej
.
instrukcji.źródło
Smalltalk,
94 90 5952na przykład w klasie Object skompiluj:
następnie wyślij q: <n> do dowolnego obiektu; tutaj liczba całkowita:
weryfikacja:
1 q: 0 -> q
1 q: 1 ->:
1 q: 2 -> n
...
1 q: -1 ->)
1 q: -2 ->)
1 q: -3 -> 1
lub lepiej:
(0 do: 100) zbierz: [: n | 1 q: n] jako: String
->
')q:n|s m|s:=thisContext method source.m:=s size.^s at:(n>=0ifTrue:n-1\\m+1ifFalse:m-(0-n\\m))q:n|s m|'
(-1 w dół do: -500) zbierz: [: n | 1 q: n] jako: String
->
')m\\n-0(-m:eslaFfi1+m\\1-n:eurTfi0=>n(:ta s^.ezis s=:m.ecruos dohtem txetnoCsiht=:s|m s|n:q))m\\n-0('
wyjaśnienie dla innych niż Smalltalkers:
thisContext jest bieżącą ramką stosu, którą można zapytać o jej metodę , którą można zapytać o jej źródło .
źródło
Runiczne Zaklęcia , 17 bajtów
Wypróbuj online!
Po prostu używa standardowej quine do wygenerowania ciągu programu, a następnie używa opartego na łańcuchach operatora modulo 1, aby uzyskać znak o danym indeksie (który natywnie obsługuje negatywne i pozytywne wskazania, zachowanie zależne od Pythona).
,
„divide” dzieli łańcuch na części (wystarczająco logiczne odwrotność*
duplikowania czasów łańcuchax
),+
łączy i-
usuwax
znaki z końca (logiczne odwrotność+
). Tak więc%
polecenie przyjmuje rolęcharAt(x)
: jedynej podstawowej operacji łańcuchowej, która pozostała (po operacjach podobnych do stosu obsługiwanych przez te same komendy, które dotyczą stosu; np.l
Rozmiar stosul͍
jest równy długości łańcucha).źródło
JavaScript (ES6), 28 bajtów
Zmodyfikowany quine.
Obsługiwana jest wartość większa niż 28, obsługiwana
%28
jest wartość mniejsza niż 0.substr()
.źródło