Podział niezbyt małych liczb

15

Napisać program lub funkcję, która przyjmuje w dodatnich liczb całkowitych a, bi c, i drukuje lub powraca a/bdo cmiejsc po przecinku, przy zastosowaniu operacji + - * /% [dodawanie, odejmowanie, mnożenie, dzielenie, modulate] na dodatnich liczb całkowitych: można użyć wszystkiego, twój język pozwala, ale nie na liczbach zmiennoprzecinkowych. Zakres a, b, c będzie zakresem dozwolonym dla liczb całkowitych bez znaku w twoim języku. Wynik liczbowy zostanie obcięty do ostatniej cyfry do wydrukowania (więc nie round).

Oznacza to, że jeśli twój język nie ma typu liczb całkowitych (tylko liczba zmiennoprzecinkowa), możesz uczestniczyć, używając tych liczb zmiennoprzecinkowych tylko jako dodatnich liczb całkowitych. Istotą tego ćwiczenia byłoby napisanie funkcji, która znajdzie cyfry w podziale zmiennoprzecinkowym, używając tylko operacji + - * /% na liczbach całkowitych [niepodpisanych].

Przykłady

  • print(1,2,1) wydrukuje 0.5
  • print(1,2,2) wydrukuje 0.50
  • print(13,7,27) wydrukuje 1.857142857142857142857142857
  • print(2,3,1) wydrukuje 0.6
  • print(4,5,7) wydrukuje 0.8000000
  • print(4,5,1) wydrukuje 0.8
  • print(9999,23,1) wydrukuje 434.7
  • print(12345613,2321,89) wypisuje się, jeśli Twój język ma 32-bitowy niepodpisany 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466

Najkrótszy kod w bajtach wygrywa. Przykro mi, jeśli wydaje się to niejasne ... Nie znam również języków, nie pamiętam dobrze słów ... Lepiej mieć jeden link do Ideone.com lub innego miejsca, aby łatwo wypróbować odpowiedź, szczególnie dla przetestuj niektóre dane wejściowe inne niż proponowane.

RosLuP
źródło
1
Jaki jest zakres liczb całkowitych a, b, c?
Ton Hospel,
@ Ton Hospel zakres a, b, c będzie zakresem pozwalającym na całkowitą liczbę bez znaku w Twoim języku: na przykład, jeśli jest to 32-bitowy bez znaku, będzie to 0..0xFFFFFFFF, ale jeśli c> = 0xFFFFFFF tak duży, wynik będzie bądź trochę powolny ...
RosLuP
2
Jest to funkcja zaokrąglania - a ściślej mówiąc, musi być funkcją zaokrąglania, aby mogła zostać poprawnie określona. Obecnie nie jest jasne, jaka byłaby poprawna odpowiedź np (1,2,0). Zobacz meta.codegolf.stackexchange.com/a/5608/194
Peter Taylor
1
Przepraszamy za ponowne otwarcie tego pytania; Myślę, że jest prawie gotowy do ponownego otwarcia, z wyjątkiem problemu, na który zwrócił uwagę Peter Taylor. Jaka jest wydajność dla (1,2,0)?
ETHproductions
2
W rzeczywistości (1,2,0)powinno być nieistotne, ponieważ 0nie jest dodatnią liczbą całkowitą. I wolałbym, żeby c tak pozostało, ponieważ wolałbym nie myśleć o dołączaniu .czy nie
Ton Hospel,

Odpowiedzi:

5

05AB1E , 17 13 11 19 14 bajtów

Wprowadź w formularzu b, a, c.
Zaoszczędzono 5 bajtów dzięki Grimy .

‰`¹+I°*¹÷¦'.sJ

Wypróbuj online!

Emigna
źródło
Właśnie wypróbowałem to online z danymi 13,7,27 i odpowiedź jest nieprawidłowa
Mathieu J.,
@shigazaru: Zwraca ten sam wynik co przypadki testowe. Czy zauważyłeś kolejność wprowadzania danych b,a,c?
Emigna
Próbuję przycisk „Spróbuj online”, gdzie jest ten podział: 12345613/2321 z 89 cyframi, ale wynikiem jest 5319.922 ... zamiast 5319.0922 ...
RosLuP
1
15:‰`I°*¹÷I°+¦'.sJ
Grimmy,
2
14:‰`¹+I°*¹÷¦'.sJ
Grimmy
4

Haskell, 87 bajtów

(a#b)c|s<-show$div(a*10^c)b,l<-length s-c,(h,t)<-splitAt l s=['0'|l<1]++h++['.'|c>0]++t

Przykład użycia: (13#7)27-> "1.857142857142857142857142857".

23 bajty do obsługi c==0sprawy i użycie wiodącego zera zamiast rzeczy takich jak .5.

Jak to działa: pomnóż aprzez 10^c, podziel przez b, zamień w ciąg, podziel w miejscu, w którym .należy wstawić, połącz obie części .pomiędzy nimi i napraw skrzynie krawędzi.

nimi
źródło
4

Perl 6 ,  58 57 55  48 bajtów

{(($^a.FatRat/$^b*10**$^c).Int.FatRat/10**$c).base(10,$c)}
{(Int($^a.FatRat/$^b*10**$^c).FatRat/10**$c).base(10,$c)}
{base Int($^a.FatRat/$^b*10**$^c).FatRat/10**$c: 10,$c}
{base ($^a*10**$^c div$^b).FatRat/10**$c: 10,$c}

Dość denerwujące jest to, że można by go skrócić do tego samego poziomu, {($^a.FatRat/$^b).base(10,$^c)}gdyby pozwolono mu zaokrąglić do najbliższej wartości.

Wyjaśnienie:

# bare block lambda with 3 placeholder parameters 「$^a」, 「$^b」 and 「$^c」
{
  (
    (

      # create an Int containing all of the digits we care about
      $^a * 10 ** $^c div $^b

    ).FatRat / 10**$c  # turn it into a Rational

  ).base( 10, $c )     # force it to display 「$c」 digits after the decimal point
}
Brad Gilbert b2gills
źródło
Nie znam perl6, ale czy (...).FatRat / 10**$xpodział nie jest rozumny ? Dozwolone jest tylko dzielenie liczb całkowitych.
nimi
@nimi a Rational to klasa z dwoma Ints .
Brad Gilbert b2gills 13.10.16
Operatory matematyczne są dozwolone tylko dla typów liczb całkowitych, a nie dla innych typów liczbowych. Cytat: „Wskazówka tego ćwiczenia ... aby napisać funkcję ... używając tylko operacji + - * /% na liczbach całkowitych [niepodpisanych]”.
nimi
@nimi Więc jeśli napisałem powtórną implementację Rational, a nie dodać does Reallub does Numericbyłoby to dozwolone? Co by się stało, gdyby ulepszyć istniejącą klasę (łata małpy) w celu usunięcia tych ról?
Brad Gilbert b2gills 13.10.16
Nie wiem Przeczytałem specyfikację, jak powiedziano wcześniej: +-*/%tylko z zwykłymi liczbami całkowitymi. „zwykła liczba całkowita” pod względem funkcjonalności (przede wszystkim: dzielenie liczb całkowitych), a nie wewnętrznej reprezentacji. Czy uważasz, że dozwolone jest używanie programowej biblioteki zmiennoprzecinkowej, która (pomimo nazwy) używa również liczb całkowitych do wewnętrznej reprezentacji?
nimi
3

Perl, 55 bajtów

Obejmuje +3 za -p

Podaj aib w jednej linii na STDIN, c w następnej

division.pl
1 26
38
^D

division.pl:

#!/usr/bin/perl -p
eval'$\.=($_/$&|0)."."x!$\;$_=$_%$&.0;'x(/ .*/+<>)}{

$_/$&jest nieco dyskusyjna. Właściwie chcę tam podział na liczby całkowite, ale Perl nie ma go bez ładowania specjalnych modułów. Jest to więc tymczasowo niecałkowita, którą następnie natychmiast obcinam (za pomocą |0), więc kończę na liczbie całkowitej, jaką dałby podział liczb całkowitych. Można go przepisać ($_-$_%$&)/$&, aby nawet chwilowo nie miał wartości niecałkowitej (choć wewnętrznie nadal byłby zmiennoprzecinkowy)

Ton Hospel
źródło
Czy możesz użyć $-go, aby był to tylko int? (Myślę, że istnieją ścisłe ograniczenia dotyczące miksu / maksimum i jestem pewien, że już to rozważyliście, ale chociaż warto to sprawdzić!)
Dom Hastings,
@DomHastings Po wykonaniu podziału zmiennoprzecinkowego nadal byłby ścięty. Perl po prostu nie ma podziału na liczby całkowite bezuse integer
Ton Hospel
Ach, więc to jest po prostu zamaskowane $-, dobrze wiedzieć. Dzięki!
Dom Hastings,
3

JavaScript (ES6), 55 50 bajtów

f=(a,b,c,d=".")=>~c?(a/b|0)+d+f(a%b*10,b,c-1,""):d

(a/b|0)wykonuje dzielenie zmiennoprzecinkowe, ale natychmiast rzuca na liczbę całkowitą. Daj mi znać, jeśli nie jest to dozwolone.

ETHprodukcje
źródło
3

PHP, 187 bajtów

działa z łańcuchami licznika, które mogą być wartościami int większymi niż PHP_INT_MAX

list(,$n,$d,$c)=$argv;$a=str_split($n);while($a){$n.=array_shift($a);if($n>=$d||$r)$n-=$d*$r[]=$n/$d^0;}if(!$r)$r[]=0;if($c)$r[]=".";while($c--){$n*=10;$n-=$d*$r[]=$n/$d^0;}echo join($r);

Nie mam innej szansy, więc 13/7 skraca się do 1,8571428571429 i docieram więc nie do przypadku testowego z 27 miejscami dziesiętnymi

W ten sposób 36 bajtów nie jest dozwolone

<?=bcdiv(($z=$argv)[1],$z[2],$z[3]);
Jörg Hülsermann
źródło
podział zmiennoprzecinkowy nie jest dozwolony zgodnie z OP
Maltysen 12.10.16
@Maltysen Przepraszam, że wycofałem się. Tak bardzo bałem się znaleźć krótsze rozwiązanie, że nie rozpoznałem tego wbrew specyfikacji.
Jörg Hülsermann
2

Pyth - 21 19 18 16 14 bajtów

Sprawdzę format wejściowy, który może uratować wiele.

j\.c`/*E^TQE]_

Pakiet testowy . (PS 27 nie kończy się online, więc zrobiłem 10 zamiast tego).

Maltysen
źródło
@Emigna Ani odtąd nie musi 0 nie jest to dodatnia liczba całkowita (nawet jeśli c=0
operacja dodaje kolejne
@TonHospel: Ach, rzeczywiście. Patrzyłem na przykłady. Mogę skrócić moją odpowiedź :)
Emigna
Nie działa z liczbami, które mają wiodące 0 po przecinku, na przykład 2/21 do 10 miejsc po przecinku.
Emigna,
2/21 z 10 cyframi drukuj tylko 9 cyfr po
kropce
2/21 z 10 cyframi, jak mówi Emigna, zamiast 0,09 ... wydrukować 0,9 ...
RosLuP
2

JavaScript (ES6),  64  62 59 bajtów

Zaoszczędzono 2 bajty dzięki produktom ETH.

Uwzględniony podział zawsze skutkuje liczbą całkowitą.

f=(a,b,n,s)=>~n?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):s

console.log(f(13,7,27))

Arnauld
źródło
Czy pomijanie w mogóle nadal działałoby? f=(a,b,n,s)=>n+1?f((q=(a-a%b)/b,a%b*10),b,n-1,s?s+q:q+'.'):sma 60 bajtów.
ETHproductions
@ETHproductions - Rzeczywiście. Dzięki!
Arnauld
2

Java 7, 105 bajtów

import java.math.*;String c(int...a){return new BigDecimal(a[0]).divide(new BigDecimal(a[1]),a[2],3)+"";}

Kod niepoznany i testowy:

Wypróbuj tutaj.

import java.math.*;
class M{
  static String c(int... a){
    return new BigDecimal(a[0]).divide(new BigDecimal(a[1]), a[2], 3)+"";
  }

  public static void main(String[] a){
    System.out.println(c(1, 2, 1));
    System.out.println(c(1, 2, 2));
    System.out.println(c(13, 7, 27));
    System.out.println(c(2, 3, 1));
    System.out.println(c(4, 5, 7));
    System.out.println(c(4, 5, 0));
    System.out.println(c(9999, 23, 0));
    System.out.println(c(12345613, 2321, 89));
  }
}

Wynik:

0.5
0.50
1.857142857142857142857142857
0.6
0.8000000
0
434
5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
Kevin Cruijssen
źródło
Nie sądzę, że jest to poprawne, ponieważ jest to zasadniczo zmiennoprzecinkowy podział, nawet jeśli jest nazywany dividei nie /.
corvus_192
@ corvus_192 Inna usunięta odpowiedź Java, która została opublikowana później niż ja, miała uzasadnienie, które tutaj skopiuję-wkleję (podziękowania za to wyjaśnienie należą do @SocraticPhoenix ): „ Jak to działa: Java BigDecimals są implementowane jako BigIntegers, ze skalą. Jest to technicznie zmiennoprzecinkowy, jednak obiekty BigInteger i BigDecimal używają tylko inttypu do przechowywania wartości liczbowych. (Czy to nie fajne? BigInteger składa się int[]z cyfr. Na przykład {1,2,5} w podstawie 10 wynosi 125. I nie jestem pewien, na jakiej podstawie znajdują się cyfry BigInteger, ale sądzę, że jest to więcej niż 10.
Kevin Cruijssen
2

Rubin, 67 bajtów

->(a,b,c){('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/,'\1.\2')}

jeśli uczynię to funkcją wykonywania powyższych przypadków testowych

def print(a,b,c); ('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/, '\1.\2'); end
 => :print 
print(1,2,1)   # would print 0.5
 => "0.5" 
print(1,2,2)   # would print 0.50
 => "0.50" 
print(13,7,27) # would print 1.857142857142857142857142857
 => "1.857142857142857142857142857" 
print(2,3,1)   # would print 0.6
 => "0.6" 
print(4,5,7)   # would print 0.8000000
 => "0.8000000" 
print(4,5,1)   # would print 0.8
 => "0.8" 
print(9999,23,1) # would print 434.7
 => "434.7" 
print(12345613,2321,89) # would print if your Language has 32 bit unsigned 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
 => "5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466" 
"('0'+(a*10**c/b).to_s).gsub(/^0*(.+)(.{#{c}})$/, '\1.\2')".length
 => 52 
Mathieu J.
źródło
Witamy w Code Golf! W przypadku większości języków, gdy definiujesz funkcję, musisz ją zdefiniować do końca i nie możesz polegać na założeniu, że istnieją predefiniowane zmienne takie jak ta. W Ruby najkrótszym sposobem na zdefiniowanie lambda jest ->a,b,c{...}zastąpienie elips kodem. (Rzeczywiste przypisanie zmiennej nie jest wymagane przez konsensus.)
Wartość tuszu
dzięki, miałem błędne wrażenie, że inni pominęli tę część ... ale masz rację. Właśnie to dodałem.
Mathieu J.,
2

Rakieta 203 bajtów

(let*((s(~r(/ a b)#:precision c))(sl(string-split s "."))(s2(list-ref sl 1))(n(string-length s2)))
(if(< n c)(begin(for((i(- c n)))(set! s2(string-append s2 "0")))(string-append(list-ref sl 0)"."s2))s))

Nie golfowany:

(define (f a b c)
  (let* ((s (~r(/ a b)#:precision c))
         (sl (string-split s "."))
         (s2 (list-ref sl 1))
         (n (string-length s2)))
    (if (< n c)
        (begin 
          (for ((i (- c n)))
            (set! s2 (string-append s2 "0")))
          (string-append (list-ref sl 0) "." s2))
        s )))

Stosowanie:

(f 7 5 3)
(f 1 2 1) 
(f 1 2 2) 
(f 13 7 27)

Wynik:

"1.400"
"0.5"
"0.50"
"1.857142857142857142857142857"

Inna metoda (niepoprawna odpowiedź tutaj):

(real->decimal-string(/ a b)c)
rnso
źródło
Obawiam się, że jest to nieprawidłowe, ponieważ real->decimal-stringoczekuje realwartości jako pierwszego argumentu, podobnie jak /podział zmiennoprzecinkowy, co nie jest dozwolone w tym zadaniu. Ponadto: real->decimal-stringzaokrągla ( (f 1 6 7)-> 0.1666667) zamiast obcinania.
nimi
Dzięki za spostrzeżenia. Wkrótce poprawię kod.
rnso
1

q 196 bajtów

w:{((x 0)div 10;1+x 1)}/[{0<x 0};(a;0)]1;{s:x 0;m:x 2;r:(10*x 1)+$[m<0;{x*10}/[-1*m;a];{x div 10}/[m;a]]mod 10;d:1#.Q.s r div b;($[m=-1;s,".",d;$[s~,:'["0"];d;s,d]];r mod b;m-1)}/[c+w;("";0;w-1)]0

Aby uruchomić: najpierw ustaw a, b, c.

Boston Walker
źródło
1

Rdza, 114 bajtów

fn print(mut a:u32,b:u32,c:u32){let mut p=||{print!("{}",a/b);a=a%b*10};p();if c>0{print!(".")}for _ in 0..c{p()}}

kod testowy:

fn main() {
    print(1, 2, 1);    println!(""); // should print 0.5
    print(1, 2, 2);    println!(""); // should print 0.50
    print(13, 7, 27);  println!(""); // should print 1.857142857142857142857142857
    print(2, 3, 1);    println!(""); // should print 0.6
    print(4, 5, 7);    println!(""); // should print 0.8000000
    print(4, 5, 0);    println!(""); // should print 0
    print(9999, 23, 0);println!(""); // should print 434
    print(12345613,2321,89); println!("\n");  // 5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
}
Christopher Phillips
źródło
1

PHP, 89 bajtów

list(,$a,$b,$c)=$argv;for($o=intdiv($a,$b).'.';$c--;)$o.=intdiv($a=10*($a%$b),$b);echo$o;

intdiv () jest wprowadzony w php 7, więc wymaga tego. php 7.1 pozwoli mi zmienić list () na [], a tym samym zaoszczędzi 4 bajty.

użyj jak:

php -r "list(,$a,$b,$c)=$argv;for($o=intdiv($a,$b).'.';$c--;)$o.=intdiv($a=10*($a%$b),$b);echo$o;" 1 2 1
użytkownik59178
źródło
wymienić $o.=intdiv($a=10*($a%$b),$b);z $o.=($a=10*($a%$b))/$b^0;uratuje 4 bajty.
Jörg Hülsermann
Początkowo zamierzałem skorzystać z tej rady (zredagowałem odpowiedź i wszystko), ale po drugie pomyślałem, że to podział zmiennoprzecinkowy, a następnie rzut na int, więc dla <10% wzrostu długości wolałbym całkowicie trzymać się specyfikacji pytanie.
user59178,
1

C #, 126 bajtów

(a,b,c)=>{var v=a*BigInteger.Parse("1"+new string('0',c))/b+"";return v.PadLeft(c+1,'0').Insert(Math.Max(1,v.Length-c),".");};

Pełny program z przypadkami testowymi:

using System;
using System.Numerics;

namespace DivisionOfNotSoLittleNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<BigInteger,BigInteger,int,string>f= (a,b,c)=>{var v=a*BigInteger.Parse("1"+new string('0',c))/b+"";return v.PadLeft(c+1,'0').Insert(Math.Max(1,v.Length-c),".");};

            //test cases:
            Console.WriteLine(f(1,2,1));    //0.5
            Console.WriteLine(f(1,2,2));    //0.50
            Console.WriteLine(f(13,7,27));  //1.857142857142857142857142857
            Console.WriteLine(f(2,3,1));    //0.6
            Console.WriteLine(f(4,5,7));    //0.8000000
            Console.WriteLine(f(4,5,1));    //0.8
            Console.WriteLine(f(9999,23,1));    //434.7
            Console.WriteLine(f(12345613,2321,89)); //5319.09220163722533390779836277466609220163722533390779836277466609220163722533390779836277466
            Console.WriteLine(f(2,3,1));    //0.6
            Console.WriteLine(f(4,5,2));    //0.80
        }
    }
}

Wprowadzono podział na liczby całkowite. Można użyć liczb o dowolnym rozmiarze, ze względu na BigIntegertyp danych ( System.Numericswymagany jest import ). Parametr liczby cyfr cjest ograniczony do 2 ^ 31-1, jednak powinien zawierać więcej niż wystarczającą liczbę cyfr.

adrianmp
źródło
1

Groovy ( 78 77 42 bajtów)

{a,b,n->Eval.me(a+'.0g').divide(b, n, 1)}​

Wyjaśnienie

Eval.me(a+'.0g');- Konwertuj z wejścia liczb całkowitych na dane wejściowe BigDecimal. W groovy notacji BigDecimal jest notacja podwójna z dołączonym G lub g. Mógłbym również użyć konstruktora, new BigDecimal(it)ale to uratowało bajt.
.divide(b, n, 1)- Podziel przez bz precyzją n, tryb zaokrąglania do połowy.

Wypróbuj tutaj: https://groovyconsole.appspot.com/script/5177545091710976

Urna Magicznej Ośmiornicy
źródło
Ale BigDecimal obsługuje operacje zmiennoprzecinkowe, które - o ile się nie mylę - uważam, że zostało to zabronione w tym ćwiczeniu.
Mathieu J.,
1

Partia, 122 bajty

@set/as=%1/%2,r=%1%%%2
@set s=%s%.
@for /l %%a in (1,1,%3)do @set/ad=r*10/%2,r=r*10%%%2&call set s=%%s%%%%d%%
@echo %s%
Neil
źródło
1

Mathematica, 50 bajtów

StringInsert[ToString@Floor[10^# #2/#3],".",-#-1]&

Nienazwany funkcją trzech argumentów (które zostały zamówione c, a, baby zapisać gdzieś bajt), która zwraca ciąg znaków. Mnoży się a/bprzez 10^c, przyjmuje największą funkcję całkowitą, a następnie konwertuje na ciąg i wstawia kropkę dziesiętną w odpowiednim miejscu. Szkoda, że ​​nazwy funkcji nie są krótsze.

Greg Martin
źródło
1

Python 3, 62 bajtów

a,b,c=map(int,input().split());print("{:.{1}f}".format(a/b,c))

Wypróbuj tutaj

* Uwaga : repl.it używa starszej wersji Python 3 , która wymaga określenia wszystkich indeksów pól, co oznacza "{:.{1}f}", że "{0:.{1}f}"zamiast tego, będzie to 63 bajty w repl.it

Jak używać

Wprowadź wszystkie trzy wartości ze spacjami pomiędzy nimi. tzn. Dane wejściowe 1 2 1dają wynik0.5

Wyjaśnienie

input().split(): Pobiera dane wejściowe użytkownika i dzieli je na listę z separatorem (spacja)

a,b,c = map(int,XX): Odwzorowuje zmienne na wartości określone przez użytkownika za pomocą typu int

"{:.{1}f}".format(a/b,c): Formatuje ciąg, aby wyświetlić wynik podziału i zastępuje {1}go, caby ustawić miejsce dziesiętne wyświetlanego ciągu

print(XX): drukuje dostarczony ciąg

użytkownik7297223
źródło
1

Python 3 , 58 bajtów

lambda a,b,c:(lambda s:s[:-c]+"."+s[-c:])(str(a*10**c//b))

Wypróbuj online!

Jest to dokładne z określoną liczbą miejsc po przecinku, o ile a * 10 ** cnie jest zbyt duże.

Próbowałem Python 2, aby skrócić str(...)do `...`ale Pythonie 2 wstawia Lna końcu jeśli jest zbyt duży, więc sprawdzenie zajęłoby sposób więcej bajtów niż to warte.

HyperNeutrino
źródło
1

Stax , 13 bajtów

ä·oαì█↕▬AS¥é▼

Uruchom i debuguj

Argumenty są akceptowane w c a bkolejności.

rekurencyjny
źródło
Problemem może być przypadek „print (9999,23,1)”, wynik wydruku w poście to „434,7”, podczas gdy twój wynik wydaje się „4,7” tak samo jak w przypadku ostatniej: 5319.092201etc zamiast 9.092201etc
RosLuP
Nie zgadzam się ... Dziś rano podążyłem za twoim linkiem i wynikiem sprawy „drukuj (9999,23,1)” w twojej kolejności funkcji było 4,7, a nie
434,7
@RosLuP: Zmieniłem podejście. Wynik jest teraz poprawnie „434,7”. Zmniejszyłem również rozmiar o bajt.
rekurencyjne
0

C, 67 bajtów

h(a,b,i){int j=!i;for(;printf(j++?"%u":"%u.",a/b),i--;a=10*(a%b));}

Wypróbuj online!

Pewna poprzednia wersja, jak sądzę, miała błąd w pamięci odczytu poza przypisanym do programu ... Dzięki pułapce cat i wszystkim ...

RosLuP
źródło
@ceilingcat ok dziękuję
RosLuP
Podoba mi się ostatni 69 bajtów
RosLuP
62 bajty
pułap catcat
@ceilingcat ok dziękuję
RosLuP