Odprawa
Trudność pytania Code Golf można obliczyć w ten sposób:
Gdzie v
jest liczba wyświetleń pytania
i a
jest liczbą odpowiedzi na pytanie
a ⌈ x ⌉ jest operatorem sufitowym .
Również:
Obecna trudność tego pytania: ***
Zadanie
Napisz program, który weźmie dwie liczby całkowite (v and a)
i wyświetli trudność asterisks (*)
.
Dane wejściowe mogą mieć postać tablicy, oddzielnego łańcucha lub oddzielnych argumentów funkcji
Dane testowe
Views Answers Difficulty Program Output
163 2 2 **
548 22 1 *
1452 24 1 *
1713 37 1 *
4162 32 2 **
3067 15 3 ***
22421 19 10 **********
Przykład z pseudokodem
v: 1713
a: 37
out = clamp(ceil(((v/a)/700)*10), 0, 10); // evaluates to 1
//program will output '*'
Najkrótszy kod w bajtach wygrywa! Dopuszczalne są spacje końcowe / wiodące.
/700 * 10
zamiast tego/70
?Odpowiedzi:
JavaScript (ES6),
4039 bajtówPonieważ
substring
zapewnia wymagane zachowanie mocowania i „sufitu”. Edycja: Zwykle jestem zbyt leniwy, aby zawracać sobie głowę, ale ponieważ otrzymałem 4 głosy poparcia, postąpiłem zgodnie z radą @ MarsUltor, aby zaoszczędzić 1 bajt, curry.źródło
v=>a=>
substr
zamiast tego? Wiem, że drugi parametr robi różnicę, ale nie jestem pewien co do pierwszego ...slice
byłoby jeszcze krótsze.substr
islice
zinterpretować negatywny argument jako liczenia tyłu od końca łańcucha.Od dłuższego czasu chciałem to zrobić ...
HTML + CSS
491487485 bajtów-4 bajty dzięki Conor O'Brien
-2 bajty dzięki Releasing Helium Nuclei
Dane wejściowe przyjmuje się jako szerokość i wysokość okna strony; szerokość jest liczbą wyświetleń, a wysokość jest liczbą odpowiedzi.
Możesz spróbować w przeglądarce, wpisując
jako adres URL w nowej karcie.
źródło
}
.05AB1E, 11 bajtów
Wyjaśnienie
Wypróbuj online
źródło
JavaScript (ES6),
3736 bajtówZaoszczędzono 1 bajt dzięki curry, dzięki TheLethalCoder
Pokaż fragment kodu
źródło
v=>a=>
zamiast(v,a)=>
?v=70, a=1
, prawda?Mathematica,
3835 bajtówDzięki @MartinEnder za 3 bajty
źródło
Clip
, która ma prawie taką samą składnię jak Clamp OP, ale potem zobaczyłem, żeStringRepeat
ma opcjonalny trzeci argument na obcinanie.Ceiling[]
.EXCEL, 29 bajtów
Jeśli policzysz Excela jako reprezentację VBA Excel, możesz użyć
gdzie
v
ia
są nazwą komórek referencyjnych.źródło
CJam,
181514 bajtówZaoszczędzono 1 bajt dzięki Peter Taylor i 3 bajty dzięki Adnan
Wypróbuj online
źródło
C #,
684948 bajtówTo jest wersja C # tej doskonałej odpowiedzi autorstwa Neila.
Zaoszczędził kolejne 19 bajtów dzięki Neilowi
źródło
(int)System.Math.Floor(10-v/a/70)
lub po prostu(int)(10-v/a/70)
.70d
spokoju, ale działa lepiej dziękid
tam.v=>a=>
Java 8, 57 bajtów
Używa lambda do zapisywania bajtów, wykonuje obliczenia i podciągi, aby zwrócić odpowiedź.
Oto moja klasa do testowania.
Aktualizacja
źródło
java.lang.
takiej potrzeby, ponieważ jest to domyślnie dołączony pakiet.System.out.println((int)2.99);
drukuje,2
a ponieważ pobieram wartość wstępnie ułożoną z podłogi, a następnie podłogę, to to samo, co odsuwając sufit od 10.MATL , 12 bajtów
Wypróbuj online!
Wyjaśnienie
Zaokrąglanie w górę i zaciskanie odbywa się jednocześnie w następujący sposób: liczba
x = v/a/70
jest porównywana z każdym elementem tablicy[0 1 ... 9]
. Liczby tej tablicy, które zostaną przekroczone,x
staną się gwiazdkami, a pozostałe będą spacjami.źródło
Python2, 32 bajty
zapisano 3 + 2 bajty i poprawiono jednym błędem dzięki Dziurawej Zakonnicy
podobna do odpowiedzi Neilsa. Wykorzystuje fakt, że Python2 dokonuje podziału na liczby całkowite.
źródło
v=70
ia=1
f=
Można usunąćv, a
może stać sięv,a
Haskell, 35 bajtów
[1..min(ceiling$v/a/70)10]
tworzy zakres od 1 do obliczonej trudności (pusta lista dla trudności 0). częstoa>>b
powtarza listęb
length a
.źródło
Pyke,
139 bajtówWypróbuj tutaj!
Wyjaśnienie:
źródło
C #,
978987774241 bajtówZaoszczędzono 10 bajtów dzięki Adámowi
Zaoszczędź kilka bajtów dzięki Arnauldowi
źródło
(int)System.Math.Ceiling(v/a/70d)
przez(v+69)/(70*a)
... Zauważ, że ponadto v / a nie może być ujemna, więcc
można uprościć wiele, bo nie trzeba by sprawdzić na to.Perl,
3532 bajtówUżyj,
-E
aby aktywowaćsay
i podać argumenty w odwrotnej kolejności:Jeśli dozwolone są argumenty na STDIN, 29 bajtów to:
źródło
0|
zamiast$-=
? (Myślenie operatora priorytetem może być niewłaściwe ...)0|
liczbę ujemną w ogromną liczbę (prowadzącą do zera*
s),$-=
przycina do 0 (prowadzącą do dziesięciu*
s), czego potrzebuję tutajR,
68, 5052 bajtówrep
domyślnie umieszcza min na liczbie 0.Dzięki @plannapus i @ Anastasiya-Romanova 秀 za wykrycie mojego błędu.
źródło
f=
1+
pomin(
, aby uzyskać te same dane wyjściowePyth ,
1713 bajtów4 bajty przypisane Luisowi Mendo za jego algorytm .
Zestaw testowy.
źródło
JavaScript ES6, 48 bajtów
źródło
C,
54,51,50, 49 bajtówZakładając, że
v
jest dodatnia lub zerowa ia
dodatnia,x < min
przypadek mocowania nigdy nie jest spełniony, ponieważ nie ma możliwości, aby wynik operacji sufitu mógł być ujemny. Dodatkowo, matematyka na liczbach całkowitych dla wartości nieujemnych zawsze daje dolną granicę wyniku, więc dodajemy,1
aby uzyskać pułap.To rozwiązanie wymaga
write
funkcji, działa przynajmniej w systemie Linux.Test główny:
źródło
(v=v/a/70)
z(v/=a*70)
oszczędza 1 bajt.javascript:
8273 bajtyźródło
console.log
, powrót jest w porządku. Możesz także zapisać bajtv=>a=>
zamiast(v,a)=>
Dyalog APL , 15 bajtów
'*'⍴⍨
znak powtórzył to wiele razy:10⌊
min (10, ...⎕÷
wejście podzielone przez70×
siedemdziesiąt razy⎕
wejścieWypróbuj APL online!
źródło
'*'/⍨(⎕÷70×⎕)>⍳10
Meduza , 18 bajtów
Pobiera dane wejściowe w formacie
[a v]
. Wypróbuj online!Wyjaśnienie
%
jest wzajemna, podobnie jak%70
1/70.i
jest wprowadzany jako tablica dwuelementowa./%
z wejściamii
i%70
zmniejsza tablicęi
poprzez odwrócenie podziału o wartości początkowej%70
. Innymi słowy, oblicza v / (a / (1/70)) , co jest równe v / (70 * a) .M
przyjmuje pułap tej wartości im
przyjmuje maksimum tego oraz10
.#'*
powtarza dosłowny*
charakter wiele razy.P
wypisuje wynik bez cudzysłowów.źródło
MATLAB,
3433 bajtyPonieważ bardzo podoba mi się to wyzwanie, oto jedno dla MATLAB (wyjścia końcowe białe znaki):
Zainspirowany odpowiedzią @Luis Mendo. Dzięki @pajonk za zapisanie jednego bajtu.
źródło
[... '']
zamiastchar(...)
. Czy naprawdę potrzebujesz,ceil
kiedy na końcu porównujesz liczby całkowite?m4,
136135 bajtówOkreśla makro,
f
które trwav
ia
, i rozszerza się do właściwego wyjścia. Większość programu stanowi realizację pułapu.źródło
dc,
110 108 10498 bajtówTo było doozy, ponieważ krojenie nie jest niczym. Ponadto dc nie manipuluje ciągami. Po prostu naprawdę czekałem na ciąg, który byłby <5 godzin kodowania. Plusem jest to, że w końcu zacząłem zapisywać popularne konstrukcje, na przykład dla pętli. Musiałem również sformułować zaokrąglenie / sufit, więc dzięki za to.
Wywołany w bash:
Zastępując (powyżej) z kodem, a
v
, aa
z ich odpowiednikami powyżej. Pojedyncze cytaty są ważne (w przeciwnym razie dostajesz rzeczy związane z historią basha).Wyjaśniono:
Prawdopodobnie jest to bardziej możliwe do gry w golfa, ale starałem się go zakończyć, aby uniknąć przedwczesnej optymalizacji.
źródło
[*]n
=>42P
. Każde wystąpienie10
może zostać zastąpione przezI
.[]p
=>IP
Haskell, 35 bajtów
To rozwiązanie jest całkowicie odmienne od odpowiedzi Laikoni, gdy chodzi o coś tak trywialnego. Jednak wynik (na razie) jest dokładnie taki sam.
Powoduje to powstanie dziesięciu gwiazdek, a następnie ich golenie. Łatwa do rozszerzenia na dowolne trudności z nieskończoną listą.
Udało mi się ogolić jeszcze jeden bajt. Ale chociaż wszystkie przypadki testowe działają, ogólnie nie powinno to być poprawne.
źródło
TI-Basic, 39 bajtów
źródło
PowerShell v2 +, 47 bajtów
Nieco port odpowiedzi JavaScript @ Neila .
Pobiera dane wejściowe
$args
i dzieli je, a następnie dzieli przez70
i dodaje.499
. Ponieważ PowerShell wykonuje zaokrąglanie bankiera , jest to efektywneceil
z dokładnością do dwóch miejsc po przecinku. Jeśli wymagana jest dodatkowa precyzja, przyklej tyle dodatkowych9
s, ile potrzeba.Wraz z
1..
tym tworzy indeks zakresu w ciąg. Ciąg jest'*'*11
, tj'***********'
. Daje to tablicę-join
znaków , więc łączymy ją z powrotem w ciąg. Ten ciąg jest pozostawiony w potoku, a dane wyjściowe są niejawne. Podobnie jak odpowiedź Neila, to skutecznie „blokuje” moc wyjściową od 1 do 10 gwiazdek.Pakiet testowy
źródło
Python 3,
6968 bajtówNie chciałem kopiować odpowiedzi na Python 2, więc moja jest nieco dłuższa.
Zaoszczędzono 1 bajt dzięki programowi man
źródło
from math import *
zaoszczędzisz kilka bajtówimport*
bez spacji.Właściwie 14 bajtów
Wypróbuj online!
Wykorzystuje fakt, że 0 wyświetleń i 0 odpowiedzi jest niemożliwe, a zatem
ceil(v/a) > 0
.Wyjaśnienie:
źródło