Biorąc pod uwagę wejściową liczbę całkowitą n >= 10
, wypisuje średnią wszystkich deduplikowanych obrotów liczby całkowitej.
Na przykład w przypadku danych wejściowych 123
obrotami są 123
(brak obrotu), 231
(jeden obrót) i 312
(dwa obroty). Średnia z nich to (123 + 231 + 312) / 3
lub 222
.
Jako inny przykład weźmy 4928
. Obroty są 4928
, 9284
, 2849
, i 8492
. Przyjęcie średniej z tych czterech liczb jest równe 6388.25
.
Inny przykład, do wejścia 445445
, gdy obroty są zdeduplikowane 445445
, 454454
i 544544
, więc wyjście jest 481481
.
W przypadku danych wejściowych 777
istnieje tylko jeden deduplikowany obrót, więc dane wyjściowe to 777
.
Zasady
- Jeśli ma to zastosowanie, możesz założyć, że wejście / wyjście będzie pasować do rodzimego typu Integer w twoim języku.
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
code-golf
math
number-theory
AdmBorkBork
źródło
źródło
Odpowiedzi:
Python 3 ,
3836 bajtówTraktuje cyfry jako osobne argumenty. Dzięki @Rod za sugestię Python 3, oszczędność 2 bajtów.
Wypróbuj online!
źródło
APL (Dyalog) , 9 bajtów
Funkcja monadyczna przyjmująca jako argument wektor cyfr.
Wypróbuj online!
Biorę średnią cyfr
+/÷≢
, następnie powtarzam ją na podstawie długości danych wejściowych≢⍴
i na koniec przeliczam z podstawy 10.Koncepcyjnie biorę sumę obrotów (bez przenoszenia):
Jest to
4+2+9+8
powtarzane 4 razy. Następnie konwersja z bazy10
(która wykonuje dla mnie przewóz) i dzielenie przez długość. Chociaż wcześniej dzielę przez długość, ponieważ jest równa i oszczędza bajty.źródło
Java 10,
163137767271 bajtów-36 bajtów dzięki @Nevay .
-61 bajtów dzięki @ OlivierGrégoire poprzez utworzenie portu odpowiedzi @Dennis na Python 3 .
-1 bajtów, przyjmując dane wejściowe jako listę cyfr zamiast ciągu.
Wyjaśnienie:
Wypróbuj online.
źródło
n->{var s=new java.util.HashSet();var r=0d;for(int l=n.length(),x;l-->0;)if(s.add(x=new Integer(n=n.substring(1)+n.charAt(0))))r+=x;return r/s.size();}
podejście strumieniowe z 137 bajtami:n->java.util.stream.IntStream.range(0,n.length()).map(i->new Integer(n.substring(i)+n.substring(0,i))).distinct().average().getAsDouble()
orElse(0)
zamiastgetAsDouble()
.(int)
razie potrzeby zaokrąglić za pomocą 5 bajtów mote.Math.pow
już się tym zajmuje. To pozwoli ci zaoszczędzić 3 bajty.(int)
i*.1
będzie to na przykład wyjście6388.888...
zamiast6388.25
wejścia4928
. A jeśli rzuciłem całą rzecz lub tylko na.pow
,int
zamiast tego, wyjdzie6388
.Łuska , 5 bajtów
Wypróbuj online!
Wyjaśnienie
Łuska , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
5
rozwiązanie bajtoweṙ
lubŀ
, a pierwszym znakiem (po lewej) nie jestA
R ,
847364 bajtyWypróbuj online!
Wprowadź jako listę cyfr.
Dzięki MickyT za golenie 11 bajtów! 8 bajtów wygolonych dowodem Dennisa, że deduplikacja jest niepotrzebna.
źródło
array(D,K+1:0)
jest krótszy niżmatrix(D,K+1,K)
bajt.05AB1E , 9 bajtów
Wypróbuj online!
źródło
v
niey
, interesujące.gFÀD})¨Osg/
było to, o czym myślałem..æ = pop a compute permutations by function, usage: .æ<FUNC>}
polecenia? Ja też nie, ale wydaje się, że to pasuje.Stax , 6 bajtów
Uruchom i debuguj
Ten program jako ciąg przyjmuje łańcuch rozdzielany cudzysłowem i wyraża średnią jako ułamek zredukowany. np
777/1
. nie jest konieczne kopiowanie obrotów. To nigdy nie zmienia wyniku.Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło
Perl 6 , 15 bajtów
Wypróbuj online!
Średnia to średnia cyfr zastosowana do każdej pozycji dziesiętnej, więc średnia cyfra razy 111 ....
1 x $_
daje ciąg 1s, które są wymuszane na ciągi przez mnożenie.Pobiera na wejściu listę cyfr. Sekwencja wymagałaby .cache przed sumą, a wprowadzenie liczby lub łańcucha wymagałoby .comb.
źródło
Wolfram Language (Mathematica) , 22 bajty
Wypróbuj online!
źródło
JavaScript (Node.js) , 43 bajty
Wypróbuj online!
źródło
Galaretka ,
65 bajtówWypróbuj online!
Jak to działa
źródło
Japt , 8 bajtów
Pobiera dane wejściowe jako tablicę ciągów jednocyfrowych.
Spróbuj
Wyjaśnienie
źródło
APL (Dyalog Unicode) ,
2114 bajtów SBCSWypróbuj online!
Funkcja ukrytego przedrostka. Pobiera dane wejściowe jako ciąg.
Dzięki Adám za oświecający 7-bajtowy zapis .
W jaki sposób?
źródło
Python 2,
8377 bajtówEDYCJA: -6 bajtów dzięki @ovs
źródło
Węgiel drzewny , 11 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
J , 10 bajtów
Jest to port doskonałego rozwiązania APL H.PWiz dla J.
Jako argument przyjmuje listę cyfr.
Wyjaśnienie:
+/%#
średnia cyfr (podziel%
sumę cyfr+/
przez ich liczbę#
)#$
tworzy listę kopii średniej zgodnie z liczbą cyfr10#.
konwertuj bazę formularza 10Wypróbuj online!
źródło
Perl 5
-lpF
,2422 bajtówWypróbuj online!
Robiąc to jako listę cyfr, jest tylko 1 bajt krótszy i wydaje się, że to oszustwo:
Wypróbuj online!
źródło
usrt
? : P/usrt
katalogu? W każdym razie naprawione. DziękiRubinowy , 60 bajtów
Wypróbuj online!
źródło
Pari / GP , 34 bajty
Pobiera dane wejściowe jako listę cyfr.
Wypróbuj online!
źródło
Ruby , 33 bajty
Wypróbuj online!
Port Dennisa na Python 3
Oto moja kiepska próba (74 bajty)
Wypróbuj online!
źródło
C ++,
218208 bajtów-10 bajtów dzięki Zacharýowi
I do przetestowania:
źródło
#include
i<
, i możesz usunąć{}
wokół nich zarówno++c;
is+=v;
. Możesz być w stanie przenieśćint s=0
początek na inne zmienne.n=0
drugiej pętli for, ponieważ do tego czasu powinna była dotrzeć0
.m/=10;m+=std::pow(10.f,c-1)*t;
=>m=m/10+std::pow(10.f,c-1)*t
. I nie używałbyśint
zamiastauto
pracy?int s=0;
przy innych zmiennych i czy potrzebujesz nawiasów klamrowych wokółs+=v;
?n>0
=>n
może działać.Pyth, 12 bajtów
Prawdopodobnie można to poprawić.
Wypróbuj tutaj!
źródło
o
. Jeśli to zrobisz i zrobisz operacje we / wy jako listy cyfr, możesz zmniejszyć to do 8 bajtów .Q
.J, 23 bajtów
Pobiera dane wejściowe jako ciąg
Wyjaśnienie
źródło
Matlab, 65 bajtów
Popracuję nad tym, całkiem pewnie, że można to zrobić lepiej.
źródło
Clojure, 139 bajtów
Dość nieoptymalne funkcje językowe do konwersji sekwencji znaków na liczby całkowite.
źródło
dc, 37 bajtów
Jest to pełny program, odczytujący dane wejściowe i drukujący dane wyjściowe:
Działa poprzez rozdzielenie liczby na cyfry i pomnożenie średniej cyfr przez reprodukcję o odpowiedniej długości (która jest budowana w
d
miarę upływu czasu).źródło