Biorąc pod uwagę liczbę dziesiętną w postaci <float>, <precision>
, rysujesz graficzną reprezentację części dziesiętnej (tj. Ułamka) liczby zmiennoprzecinkowej. Przykłady:
Wejście:,
6.75, 4
wyjście:6||| 7 ----
6.75
(pierwsza liczba z wejścia) to liczba do wyjaśnienia,4
(druga liczba z wejścia) to liczba myślników pod rurami.6
jest floored 6,75,7
jest sufitem6.75
. Liczba rur todecimal part of first input number * second input number
.Wejście:,
10.5, 6
wyjście:10||| 11 ------
Wejście:,
20.16, 12
wyjście20|| 21 ------------
.16
faktycznie bierze 1,92 rury, ale ponieważ nie mogę narysować 1,92 rur, ustawiam sufit na 2.Wejście:,
1.1, 12
wyjście:1| 2 ------------
.1
w tym przypadku jest 1,2 rurki, więc jest przeniesiony do 1 rury.Również skrzynia krawędzi. Dane wejściowe:
5, 4
(tzn. Liczba jest liczbą całkowitą), dane wyjściowe:5 6 ----
- Liczba do wyjaśnienia to liczba dodatnia, ograniczona tylko twoimi umiejętnościami językowymi.
- Liczba dokładności jest parzystą liczbą całkowitą, większą niż 2 (tj. Minimalna wymagana precyzja wynosi 4). Może być również dowolnie duży.
- > = n.5 rur zaokrągla się w górę, do n + 1 (tj. 1,5 zaokrągla się do 2, a 2,5 zaokrągla się do 3). <n.5 rury są zaokrąglane do n (tj. 1.4 jest zaokrąglany do 1, a 2.4 jest zaokrąglany do 2).
- Jeśli byłoby to wygodniejsze dla twojego języka, możesz wziąć dane wejściowe jako tablicę, np
[6.75, 4]
. Jeśli wprowadzisz dane w odwrotnej kolejności, tzn.[4, 6.75]
Podaj je w swojej odpowiedzi.
5.0 4
: czy wyciągnąć z5
do6
lub od4
celu5
, czy też dopuszczalne? Dane wejściowe1.25 2
: czy ma 0 lub 1|
s i dlaczego (tj. Jaka jest zasada zaokrąglania)? Czy pierwsza liczba na wejściu musi być dodatnia? Jaka jest jego maksymalna precyzja i wielkość? Czy druga liczba na wejściu musi być dodatnia? Jeśli jest negatywny, czy cofamy się?Odpowiedzi:
CJam, 32 bajty
Najpierw precyzja i sekunda dziesiętna, oddzielone spacją.
Uruchom wszystkie przypadki testowe.
Wyjaśnienie
źródło
Mathematica, 119 bajtów
Próbowałem ... Testowanie:
źródło
Japt,
4746 bajtówTylko kilka dodawania i powtarzania.
Wypróbuj online
źródło
(U-Uf)
jest taki sam jakU%1
zapisanie dwóch bajtów.Java,
253206181 bajtówZaoszczędź 47 bajtów dzięki @Kenney, wprowadzając warunki i zmienne używane raz, i sortując zbędne zmienne.
Zaoszczędź 25 bajtów ponownie dzięki @Kenney, wprowadzając 2 pętle z operatorami trójskładnikowymi.
Manipulacja czystym ciągiem:
Wersja z wbudowanymi pętlami (181 bajtów):
Wersja z 4 pętlami (206 bajtów):
Wersja bez golfa:
Przykład działania tutaj w ideone.com . Pełny program akceptuje wejście STDIN jako
<float>,<precision>
.UWAGA:
Math.round(float)
rundy Java są używaneRoundingMode.HALF_UP
jako domyślne, co jest wymaganym zachowaniem PO.Wynik dostarczonych przypadków testowych był dopasowany do tego, co zapewnił PO.
źródło
a
(nie używany), ustawienie na 233. Można zaoszczędzić dodatkowe 23 do 210 bajtów dostać na: wymianieq.length()
zb
oszczędza 13:int g=(int)f, b=(""+g).length(), c=b, i=0;
. Zwiększanie iteracyjnej w stanie zfor
zapisuje 6 i inlined
(raz) zachowuje 4:int c = b; for(;i++<b;)h+=" "; for(;i++<=b+p;)h+="-"; for(i=c;i<c+Math.round((f-g)*p);i++)q+="|"; for(;i++<p+b;)q+=" ";
.\n
b
stało się nieaktualne aswell ;-) Można jeszcze uratować 1 bajt w 2. za:for(;i++<=c+p;)
. Ty mógł zapisać plik Unix zakończeń linii na okna, ale niestety Java nie pozwala multilinii struny ..for(;i<c+p;)h+=i++<c?" ":"-";for(i=c;i<p+c;)q+=i++<c+Math.round((f-g)*p)?"|":" ";
JavaScript ES6,
105104 bajtówZaoszczędzono 1 bajt dzięki, um, jak w ogóle wpisujesz ՊՓԼՃՐՊՃՈԲՍԼ?
źródło
(f,p)=>(i=f|0)+("|"[r="repeat"](j=(f-i)*p+.5|0)+" "[r](p-j))+(i+1)+("\n"+i).replace(/\d/g," ")+"-"[r](p)
\n
prawdziwą nową linią. I pamiętaj o owinięciu go ciągami szablonów.Haskell, 113 bajtów
Przykład użycia:
properFraction
dzieli przecinek dziesiętny na część całkowitą i ułamkową. Dane wyjściowe to lista części (liczba początkowa, słupki, spacje, ...), która jest połączona w pojedynczy ciąg (via>>=id
).źródło
main
opakowaniem dla pełnego programu).MATL , 49 bajtów
Korzysta z wersji 6.0.0 języka / kompilatora. Działa na Matlabie lub Oktawie.
Pobiera liczby w tej samej kolejności, co w wyzwaniu.
Przykłady
Wyjaśnienie
źródło
Perl, 90 bajtów
Oczekuje danych wejściowych jako argumentów wiersza polecenia. Zapisz w pliku (powiedzmy
90.pl
) i uruchom jakoperl 90.pl 6.75 4
Z komentarzami
źródło
Stackgoat ,
3127 bajtówPodobne do większości innych odpowiedzi. Zobaczę, czy mogę więcej grać w golfa. Dane wejściowe mogą być oddzielone przecinkami, spacjami lub prawie dowolne.
Nie konkuruje, ponieważ Stackgoat powstał po tym wyzwaniu
Wyjaśnienie
źródło
Lua, 157 bajtów
Długie, ale nie można znaleźć krótszego rozwiązania
Nie golfił
Możesz przetestować lua online , przydatne mogą być następujące przypadki testowe :)
źródło
DO,
233231 bajtówNie golfowany:
źródło
Python 3,
116108 bajtówlink trinket.io
Dziękujemy Seeq za uratowanie kilku znaków.
Pierwsza wersja:
Wersja bez golfa:
źródło
;
. Używasz tylkoh
raz, więc też powinieneś to wstawić. Powinien zapisać niektóre znaki.h
trudniejsze. Aby konkatenacja ilen
funkcja w dwóch ostatnich wierszach działały,l
musi to być ciąg znaków, więch
należy go zastąpićstr(int(l)+1)
. Ustawienieh
przed konwersjąl
zapisuje kilka znaków.