Biorąc pod uwagę dane wejściowe, wypisz wszystkie wykładniki, w których podstawa i moc sumują się do danych wejściowych

20

To jest moje pierwsze wyzwanie na tej stronie.

Wyzwanie polega na przyjęciu wejściowej liczby całkowitej n , która będzie dodatnia, i wydrukowaniu, w porządku rosnącym ( 1 do , w tym n ), wyniku (gdzie jest bieżącą liczbą całkowitą). ni ( n - i ) ii(ni)i

Przykład

Biorąc pod uwagę wejście 5, program wydrukuje:

1  
8  
9  
4  
1  

14 to 1, a1+4=5
23 to 8, a2+3=5
32 to 9, a3+2=5
41 to 4 i4+1=5
50 to 1 i5+0=5

Wejście i wyjście

Dane wejściowe będą miały postać dodatniej liczby całkowitej. Wyjście będzie listą liczb, oddzielonych przecinkami lub nowymi wierszami.

To jest , więc wygrywa najkrótszy kod.

Wcielenie ignorancji
źródło
5
szczegóły przecinka / nowej linii należy pominąć, normalną praktyką jest tutaj, aby wypisywać listy w dowolnym dogodnym formacie, w tym jako obiekt listy / tablicy zwracany przez funkcję
Sparr
3
Czy dane wejściowe są zawsze większe od 0, czy mamy do czynienia z 0 i negatywami?
Veskah
Dane wejściowe zawsze będą pozytywne
Embodiment of Ignorance
6
Dwie równie krótkie odpowiedzi nie mają znaczenia. Jeśli chcesz zaakceptować odpowiedź, wybierz najwcześniej opublikowaną. Jednak ja zdecydowanie polecam czeka co najmniej kilka dni, i sugeruje, nigdy przyjmując odpowiedź (aby zachęcić większą liczbę zgłoszeń).
ousurous
2
Czy tytuł nie powinien brzmieć „Biorąc pod uwagę liczbę całkowitą , wypisz wszystkie moce uzyskane za pomocą podstawy i wykładnika, które sumują się do danych wejściowych”?
Nicola Sap

Odpowiedzi:

6

APL (Dyalog Unicode) , 8 5 bajtów

⍳*⊢-⍳

Wypróbuj online!

Anonimowa funkcja ukrytego przedrostka. Testy TIO dla zakresu [1..10].

Dzięki @lirtosiast za 3 bajty.

W jaki sposób:

⍳*⊢-⍳  Tacit function
      Range. n generates the vector [1..n].
  ⊢-  Subtracted from the argument. The vector is now [n-1,n-2,...,0]
⍳*     Exponentiate using the range [1..n] as base. The result is the vector
       [1^(n-1), 2^(n-2), 3^(n-3),...]
J. Sallé
źródło
2
⍳*⊢-⍳ jest 5 bajtów, używając ⎕IO←1 .
lirtosiast
@lirtosiast zajęło mi trochę czasu, aby dowiedzieć się, dlaczego to działa, ale mam to. Dzięki.
J. Sallé,
5

Haskell, 23 bajty

f i=[x^(i-x)|x<-[1..i]]

Wypróbuj online!

Alternatywna wersja, także 23 bajty:

f i=(^)<*>(i-)<$>[1..i]
nimi
źródło
5

Japt, 5 bajtów

õ_p´U

Spróbuj

õ         :Range [1,input]
 _        :Map
  p       :  Raise to the power of
   ´U     :  Input decremented
Kudłaty
źródło
5

Perl 6 , 19 bajtów

{^$_+1 Z**[R,] ^$_}

Wypróbuj online!

Anonimowy blok kodu, który pobiera liczbę i zwraca listę. Zip wykłada zakres 1 to inputi zasięginput-1 to 0

Jo King
źródło
5

Aheui (esotop) , 193 164 bajtów (56 znaków)

방빠싹받분샥퍼붇바파쟈뿌차샦히망맣여
타빠바푸투반또분뽀뿌서썪삯타삯받반타
석차샦져쌲볼어타토싻삭빠쏛ㅇ또섞썪뻐

Wypróbuj online!

Wypróbuj na AVIS ( koreański ); po prostu skopiuj i wklej kod powyżej, naciśnij przycisk Start, wprowadź liczbę, zobacz, jak się porusza. Aby wyświetlić dane wyjściowe, naciśnij ikonę > _ po lewej stronie.


Nie jest dużo golfa, ale daję temu szansę.

kobalt
źródło
Czy można wybrać zestaw znaków, aby każdy znak był przechowywany w 2 bajtach?
tsh
@tsh Zgodnie ze specyfikacją Aheui, kod Aheui składa się tylko z znaków UTF-8.
cobaltp
4

Pyth , 5 bajtów

_m^-Q

Wypróbuj online!

Optymalnie zakodowane byłoby 4.106 bajtów.

_                reverse of the following list:
 m               map the following lambda d:
  ^                (N-d)**d
   -Qd             
      d
       Q         over [0,...,N-1]
lirtosiast
źródło
3

Galaretka , 5 bajtów

R*ḶU$

Wypróbuj online!

R                [1,...,n]
 *               to the power of
  ḶU$            [0,...,n-1] reversed
lirtosiast
źródło
2

MathGolf , 6 bajtów

rx\╒m#

Wypróbuj online!

Jo King
źródło
Wdrożyłem odwrotne odejmowanie, mnożenie i dzielenie, ale wygląda na to, że operator odwrotnej mocy może się przydać?
maxb
2

Siatkówka , 35 bajtów

.+
*
_
$$.($.'*$($.>`$*)_¶
%~`^
.+¶

Wypróbuj online! Wyjaśnienie:

.+
*

Przekształć dane wejściowe w jednoargumentowe.

_

Dopasuj każdą pozycję. To ustawia kilka zmiennych zastępczych. $`staje się lewą stroną meczu; $>`modyfikuje to, aby było lewą i pasowało; $.>`modyfikuje to, aby przyjąć długość, tj. bieżący indeks. $'tymczasem jest prawo do dopasowania, podobnie $.'jak długość, tj. bieżący wykładnik.

$$.($.'*$($.>`$*)_¶

Utwórz ciąg $.(plus$.' powtórzenia $.>`*plus _. Na przykład dla indeksu 2 na oryginalnym wejściu 5 $.'wynosi 3, a $.>`2, więc wynikowy ciąg to $.(2*2*2*_. Jest to dogodnie wyrażenie zastępujące siatkówkę, które oblicza 2³. Każdy ciąg jest wyprowadzany w osobnym wierszu.

%~`^
.+¶

Dla każdej linii wygenerowanej przez poprzedni etap poprzedź linię .+, zamieniając ją w etap zastępowania, i oceń ten etap, obliczając w ten sposób wyrażenie.

Neil
źródło
2

QBasic, 35 33 bajtów

Dziękuję @Neil za 2 bajty!

INPUT a
FOR b=1TO a
?b^(a-b)
NEXT

Nieco rozszerzona wersja na REPL.IT, ponieważ interpreter nie jest w pełni zgodny ze specyfikacją.

Wynik

QBasic (qb.js)
Copyright (c) 2010 Steve Hanov

   5
1
8
9
4
1
Steenbergh
źródło
Zaoszczędź 2 bajty, wypisując listę we właściwej kolejności! ( b^(a-b)dla b=1..a)
Neil
@Neil Dzięki, pracowałem nad tym!
steenbergh
2

MATL , 5 bajtów

:Gy-^

Wypróbuj online!

Wyjaśnienie

Rozważ dane wejściowe 5jako przykład.

:     % Implicit input. Range
      % STACK: [1 2 3 4 5]
G     % Push input again
      % STACK: [1 2 3 4 5], 5
y     % Duplicate from below
      % STACK: [1 2 3 4 5], 5, [1 2 3 4 5]
-     % Subtract, element-wise
      % STACK: [1 2 3 4 5], [4 3 2 1 0]
^     % Power, element-wise. Implicit display
      % STACK: [1 8 9 4 1]
Luis Mendo
źródło
2

Java, 59 bajtów

for(int i=1;a+1>i;i++)System.out.println(Math.pow(i,a-i));
isaace
źródło
1
Witamy w PPCG. Wygląda na to, że wymaga to przypisania „danych wejściowych” do predefiniowanej zmiennej a, na co nie zezwalamy.
Kudłaty
2
Witaj, oto poprawka dla Ciebie: n->{for(int i=0;i++<n;)System.out.println(Math.pow(i,n-i));} 60 bajtów (kod i przypadki testowe w linku)
Olivier Grégoire
1

Czysty , 37 bajtów

import StdEnv
$n=[i^(n-i)\\i<-[1..n]]

Wypróbuj online!

Definiuje $ :: Int -> [Int]przyjmowanie liczby całkowitej i zwracanie listy wyników.

$ n                // function $ of n
 = [i ^ (n-i)      // i to the power of n minus i
    \\ i <- [1..n] // for each i in 1 to n
   ]
Obrzydliwe
źródło
1

R , 34 bajty

x=1:scan();cat(x^rev(x-1),sep=',')

Wypróbuj online!

Giuseppe
źródło
Czy domyślny „sep” nie jest spacją? Czy to nie zadziała?
stuart stevenson
1
@stuartstevenson „Dane wyjściowe będą listą liczb oddzielonych przecinkami lub nowymi wierszami”.
Giuseppe
1

05AB1E , 5 bajtów

LD<Rm

Port @lirtosiast „s Jelly odpowiedź .

Wypróbuj online.

Wyjaśnienie:

L      # List in the range [1, (implicit) input integer]
       #  i.e. 5 → [1,2,3,4,5]
 D<    # Duplicate this list, and subtract 1 to make the range [0, input)
       #  i.e. [1,2,3,4,5] → [0,1,2,3,4]
   R   # Reverse it to make the range (input, 0]
       #  i.e. [0,1,2,3,4] → [4,3,2,1,0]
    m  # Take the power of the numbers in the lists (at the same indices)
       # (and output implicitly)
       #  i.e. [1,2,3,4,5] and [4,3,2,1,0] → [1,8,9,4,1]
Kevin Cruijssen
źródło
1

Lua , 43 41 bajtów

-2 bajty dzięki @Shaggy

s=io.read()for i=1,s do print(i^(s-i))end

Wypróbuj online!

ouflak
źródło
1
Nie sądzę, że potrzebujesz +0; wydaje się działać bez tego.
Kudłaty
1

R, 22 bajty

n=scan();(1:n)^(n:1-1)

Dość oczywiste; należy zauważyć, że :operator ma wyższą pozycję niż- operator, dlatego n:1-1jest krótszy niż(n-1):0

Jeśli wolno nam zacząć od zera, możemy stracić dwa bajty, (0:n)^(n:0)unikając potrzeby -1.

JDL
źródło
1

Węgiel , 9 bajtów

I⮌ENX⁻θιι

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

   N        Input as a number
  E         Map over implicit range
       ι    Current value
     ⁻      Subtracted from
      θ     First input
    X       Raised to power
        ι   Current value
 ⮌          Reverse list
I           Cast to string
             Implicitly print on separate lines
Neil
źródło