Wyjście liczb całkowitych w kolejności ujemnej, za każdym razem zwiększaj maksymalną liczbę całkowitą


44

Główne zadanie

Twoim zadaniem jest wydrukować liczby całkowite w kolejności malejącej, zaczynając od 1, i zwiększając się, gdy ponownie uderzasz 1, aż do osiągnięcia podanej wartości wejściowej, a następnie drukuj resztę, aż trafisz ponownie 1. Przykład z wejściem 6:

1
21
321
4321
54321
654321
Without newlines (valid output):
121321432154321654321
Uwaga dodatkowa: jest to A004736 w OEIS. Również pierwszy przykład (z nowymi wierszami) jest nieprawidłowym wyjściem, jak określono w regułach.

Wejście

Twój kod może przyjmować dowolny rodzaj danych wejściowych (graficzny, STDIN) w postaci liczby całkowitej lub liczby.

Wynik

Twój kod powinien wypisywać opisaną powyżej sekwencję, aż do osiągnięcia liczby wejściowej, a następnie zakończyć wyświetlanie, aż ponownie osiągnie 1. Wyjściem może być cokolwiek, dlatego liczby, ciągi, liczby całkowite lub wyjście graficzne. Wymagane jest wydrukowanie pojedynczej liczby (bez znaków nowej linii, jeśli jest to ciąg znaków). Twój wynik może być wprowadzany i generowany z dowolną liczbą znaków (np [].).

Ponieważ było trochę nieporozumień, oto wzorzec wyrażenia regularnego, na którym możesz wypróbować swoje wyniki.

^(\D*(\d)+\D*)$

Zasady

  • Wynik musi być pełną liczbą, nie może być podzielony na nic, nawet na nowe wiersze.
  • Algorytm ten nie powinien sprawdzać pierwszym rzędzie N znajdującym się w jakikolwiek sposób (na przykład 21w 121321), lecz dla pierwszego przykładu N, jak wartość liczby.
  • Pojedynczy znak nowej linii jest dozwolony.
  • Obsługa negatywnych danych wejściowych jest w pełni twoim wyborem, liczby ujemne nie są przypadkami, które powinieneś przetestować.

Przypadki testowe

Input: 6
Output: 121321432154321654321

Input: 1 Output: 1

Input: 26 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321222120191817161514131211109876543212322212019181716151413121110987654321242322212019181716151413121110987654321252423222120191817161514131211109876543212625242322212019181716151413121110987654321

Input: 0 Output: 0, Empty, or Error

Input: 21 Output: 121321432154321654321765432187654321987654321109876543211110987654321121110987654321131211109876543211413121110987654321151413121110987654321161514131211109876543211716151413121110987654321181716151413121110987654321191817161514131211109876543212019181716151413121110987654321212019181716151413121110987654321

Dzięki @Emigna, użyłem jego algorytmu do obliczenia tych przypadków testowych.

Zwycięzca

Zwycięzca został wybrany! To była odpowiedź ErikGolfer z imponującymi 5 bajtami! Gratulacje!


The output must be a full number ...Masz na myśli całą sekwencję, czy tylko różne podciągi (1, 2-1, 3-1 ...)? Twój pierwszy przykład nie pasuje do tego stwierdzenia.
steenbergh

1
Jeśli wyjściem musi być pojedyncza liczba, jak może to być „tablica”?
smls,

Czy ta tablica byłaby akceptowalna jako wyjście? [1, 21, 321, 4321, 54321, 654321] Co powiesz na ten? [1,2,1,3,2,1,4,3,2,1,5,4,3,2,1,6,5,4,3,2,1] A może mówisz tylko o tablicach z jednym elementem [121321432154321654321]?
smls

1
Jestem zdezorientowany co do formatu wyjściowego. Czy możesz podać przykłady tego, co jest dopuszczalne? Tablica liczb? Ciąg z liczbami oddzielonymi spacjami?
Luis Mendo,

1
Twoje wyrażenie regularne pozwala na uzyskanie wyniku mickey321211mouse. Naprawdę \Dczęści nie mają powodu, aby tam być
edc65

Odpowiedzi:



19

05AB1E , 6 bajtów

L€LíJJ

Wypróbuj online!

Wyjaśnienie

Przykładowe dane wejściowe 4

L       # range [1 ... input]
        # STACK: [1,2,3,4]
 €L     # map: range
        # STACK: [[1],[1,2],[1,2,3],[1,2,3,4]]
   í    # reverse each
        # STACK: [[1],[2,1],[3,2,1],[4,3,2,1]]
    J   # join inner lists
        # STACK: ['1','21','321','4321']
     J  # join list
        # OUTPUT: 1213214321

13

JavaScript (ES6), 37 bajtów

f=(n,k=1)=>k>n?n--?f(n):'':f(n,k+1)+k

Próbny

Alternatywna metoda dla n <10, 34 bajtów (niekonkurująca)

f=(n,s='1')=>--n?s+f(n,++s[0]+s):s

W JavaScript ciągi są niezmienne. Dlatego nie można zmienić zawartości N-tego ciągu ciągu s, przypisując mu nową wartość s[N].

Jednak wyrażenie ++s[N]jest poprawne i ocenia zgodnie z oczekiwaniami, nawet jeśli ciąg znaków pozostanie niezmieniony. Na przykład:

++"1"[0] // equals 2

I przez rozszerzenie:

s = "21"
++s[0] + s // equals "321"

Nie wydaje się działać dla n> 9
edc65

@ edc65 Oczywiście masz rację. Nie wiem, dlaczego uważałem, że można zatrzymać się o godzinie 9.
Arnauld,

12

V, 29 28 27 23 19 17 16 bajtów

8 bajtów zapisanych dzięki @DJMcMayhem

3 bajty zapisane dzięki @ nmjcman101

"apÀ­ñÄòy$jpkgJ

Ukryte postacie:

"apÀ<C-x>ñÄ<C-x>òy$jpkgJ

C-x to Ctrl + x.

Wypróbuj online! pobiera dane wejściowe za pomocą argumentów wiersza polecenia

Hexdump:

0000000: 2261 70c0 adf1 c418 f279 246a 706b 674a  "ap......y$jpkgJ

Wyjaśnienie

"ap            Paste the argument
À<C-x>         Argument minus 1 times (so that we exclude the 0)
ñ ... ò        Loop (for some weird reason the ò closes the ñ)
Ä<C-x>         paste current line above and decrement it

Teraz wygląda to tak:

1
2
...
n

nieprzerwany...

ò             recursively do (until a breaking error)
y$             yank this line
  jp           paste it down
    kgJ        go up and join
              implicit ò end

GIF (nieaktualny)

(dla arg 6)

gif


Mam kilka, zmieniając twoją pętlę na a) niejawnie kończąc ib) dołączaj do linii jak to idzie (a nie na końcu)òy$jpkgJ
nmjcman101

@ nmjcman101 Dzięki za pomoc w oszczędzaniu 2 bajtów!
Kritixi Lithos,

To jest całkiem dobrze gra w golfa. Pracowałem nad mózgiem przez dobre 20 minut i nie mogę wymyślić nic krótszego. :)
DJMcMayhem

@DJMcMayhem To dlatego, że miałem świetną pomoc :)
Kritixi Lithos

Ja to zrobiłem! Możesz zejść do 16 bajtów. Jeśli wkleisz argument, a następnie zduplikujesz / zmniejszysz w górę, możesz usunąć H. Następnie, jeśli użyjesz operatora zmniejszania na swoim À, nie będziesz miał 0 na górze, więc możesz usunąć x. Wtedy OCZYWIŚCIE a òzamknie a ­ñ, abyś mógł usunąć drugi ­ñ(czyli bajt, który zapisałeś). Link, ponieważ to nie miało sensu
nmjcman101,

11

C #, 72 69 65 bajtów

n=>{for(int i=0,j;i<n;)for(j=++i;j>0;)System.Console.Write(j--);}

Jeśli dane wyjściowe można po prostu zwrócić, a nie zapisywać na konsoli

C #, 71 68 64 bajtów

n=>{var s="";for(int i=0,j;i<n;)for(j=++i;j>0;)s+=j--;return s;}

Dzięki @VisualMelon za oszczędność wielu bajtów

Przetestuj tutaj (Humorystycznie kompilator internetowy psuje się pod dowolną liczbą powyżej 420)


To było naprawdę szybkie.
devRicher,

@devRicher Co mogę powiedzieć, czekałem na coś do opublikowania: P
Alfie Goodacre,

2
Nigdy nie ma powodu, aby używać pętli while w golfie w kodzie C #, pętla for zawsze będzie działać równie dobrze, jeśli nie lepiej. W takim przypadku możesz dołączyć przypisanie j=1do pętli for i zapisać średnik. Można również zadeklarować jtakże i, aby zapisać int. i++Może być również przeniesiony do j=izadania, oszczędzając bajt. Należy również być w stanie wymienić i<=nz i<njeśli się go j=++izamiast i zacząć ina 0.
VisualMelon,

@VisualMelon dokonał edycji, zapisano 3 bajty! Zadeklarowanie razem liczb całkowitych nie miało żadnego wpływu na liczbę bajtów, ale sprawia, że ​​pętle wyglądają nieco ładniej
Alfie Goodacre,

@AlfieGoodacre, jeśli zadeklarujesz je razem w pętli for, zaoszczędzisz jeszcze 2 bajty for(int i=0,j;i<n;);) Nie ma również potrzeby korzystania {}z wewnętrznej pętli for.
VisualMelon,

8

Pure Bash, 34

eval eval printf %s \\{{1..$1}..1}

Dwa poziomy rozszerzenia nawiasów klamrowych. Z wejściem 6pierwszy poziom rozwija się do {1..1} {2..1} {3..1} {4..1} {5..1} {6..1}. To następnie rozwija się do 1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 6 5 4 3 2 1, który jest zgniatany razem do jednego ciągu za pomocą printf %s. evalsą wymagane na obu poziomach ekspansji - dla pierwszego poziomu, aby $1parametr został rozwinięty pierwszy, a dla drugiego poziomu, aby rozwinął się po pierwszym poziomie.

Wypróbuj online


8

Perl, 21 bajtów

Używa -Ebez dodatkowych kosztów.

say map$}=$_.$},1..<>

Stosowanie

perl -E 'say map$}=$_.$},1..<>' <<< 6
121321432154321654321

7

Pyth, 7 bajtów

jks}R1S

Program, który pobiera liczbę całkowitą i wypisuje wynik.

Wypróbuj online!

Jak to działa

jks}R1S   Program. Input: Q
jks}R1SQ  Implicit input fill
    R     Map
      SQ  over [1, 2, 3, 4, ..., Q] with i:
   } 1     Yield [i, i-1, i-2, i-3, ..., 1]
  s       Merge
jk        Join
          Implicitly print

Osobiście jestem bardzo rozczarowany jk_hC.:Sdłuższą, ale fajną pracą!
FryAmTheEggman,

7

GeoGebra , 67 bajtów

1
InputBox[a]
Sum[Join[Sequence[Sequence[Text[j],j,i,1,-1],i,1,a]]]

Każda linia jest wprowadzana osobno do paska wprowadzania. Dane wejściowe są pobierane z pola wprowadzania.

Oto gif z wykonania:

Wykonanie programu

Jak to działa

Wpisanie 1niejawnie przypisuje ado 1, a InputBoxpolecenie kojarzy pole wprowadzania z a. Następnie dla każdego iIN {1, 2, 3, ..., a}, lista {i, i-1, i-2, ..., 1}jest tworzona przy użyciu Sequencepolecenia, a każdy jw tym wykazie jest konwertowana na ciąg użyciu Text. Na koniec Joinłączy wszystkie listy i Sumłączy wszystkie elementy w jeden wyświetlany obiekt tekstowy.


@devRicher To wydaje się rozsądne. Dzięki!
TheBikingViking,


7

Siatkówka , 26 22 bajtów

Liczba bajtów zakłada kodowanie ISO 8859-1.

.+
$*

$`¶
1
$.%'
0?¶

Wypróbuj online!

Wyjaśnienie

.+
$*

Konwertuj dane wejściowe na jednoargumentowe.


$`¶

W każdej pozycji wstaw prefiks aż do tego punktu, a także linię. Tworzy to jednoargumentowy zakres od 2do n+1, jedna wartość na linię.

1
$.%'

Zastąp każdy 1liczbą znaków po nim w tym samym wierszu. Włącza coś podobnego 11111do 43210.

0?¶

Usuń wszystkie linie i poprzedzające je zera.


5

GameMaker Language, 65 bajtów

b=""for(i=1;i<=argument0;i++){c=i while(j)b+=string(c--)}return b

5

APL, 10 bajtów

∊⍕¨∘⌽∘⍳¨∘⍳

Na przykład:

      (∊⍕¨∘⌽∘⍳¨∘⍳)6
121321432154321654321

Wyjaśnienie:

  • : uzyskaj liczby od 1 do N.
  • ⍳¨∘: dla każdego z nich uzyskaj liczby od 1 do N.
  • ⌽∘: odwróć tę listę
  • ⍕¨∘: uzyskaj reprezentację znakową każdego elementu (aby nie wyświetlał liczb ze spacjami między nimi)
  • : spłaszcz wynikową tablicę

Więc parsuje kod do tyłu?
devRicher,

jest składem funkcji, podałem wyjaśnienie w kolejności, w której funkcje są faktycznie oceniane
marinus

1
Oto drzewo parsowania, dla ciekawskich: tryapl.org/…
marinus

5

Python 2, 71 68 bajtów

Założę się, że rozwiązanie rekurencyjne może być krótsze, ale trudno mi sformułować je w jedno.

n=input()
i=0
o=""
while i<n:
    i+=1;j=i
    while j:o+=`j`;j-=1
print o

Wypróbuj online


5

Właściwie 8 bajtów

RR♂RΣRεj

Po raz pierwszy zamieszczam odpowiedź W rzeczywistości, więc prawdopodobnie można w nią grać w golfa.

Jak to działa

Program takes implicit input, implicit print at EOF
R           Takes the input and creates a range (1, input)   
                STACK = [1,2,..,n]
 R          Reverse the top stack item (our range)
                STACK = [n,..,2,1]
  ♂R        For each item in our range, create a range (1, rangeitem)
                STACK = [[1,2,..,n], .., [1,2], [1]]
    Σ       Stitch the items of the list together
                STACK = [n,..,1,2,3,1,2,1]
     R      Reverse the top stack item again (our answer)
                STACK = [1,2,1,3,2,1,..n]
      εj    Create an empty string and append each item from the list to it.
            (turns non string items into strings)

Wypróbuj online!


1
Nie jestem pewien, że nie jest krótszy rozwiązanie, ale już nie tak okazały się wcześniej. W każdym razie oto link Wypróbuj online dla Twojej odpowiedzi.
Sherlock9,

1
Kod R♂R♂RΣεjma taką samą liczbę bajtów, ale łatwiej jest napisać wyjaśnienie.
Sherlock9,

@ Sherlock9 twoja droga jest trochę bardziej elegancka, dodałem link i wyjaśnienie, które zapomniałem dodać wczoraj, aby spróbować wyjaśnić to nieco bardziej.
Teal pelikan

4

Brachylog , 8 bajtów

yb@[rcw\

Wypróbuj online!

Wyjaśnienie

yb         The list [1, ..., Input]
  @[       Take a prefix of that list
    rc     Reverse it and concatenate into an integer
      w    Write to STDOUT
       \   Backtrack: try another prefix

4

Perl 6 , 22 bajtów

{[~] flat [\R,] 1..$_}

Lambda, która zwraca ciąg.

( Wypróbuj online. )

Wyjaśnienie:

  • 1..$_: Zakres liczb całkowitych ... (1 2 3 4)
  • [,] 1..$_: Zmniejsz („złóż”) nad przecinkiem ... (1 2 3 4)
  • [\,] 1..$_: Z wynikami pośrednimi ( zmniejszenie trójkątne ) ...((1) (1 2) (1 2 3) (1 2 3 4))
  • [\R,] 1..$_: Zastosuj meta-operator cofania do przecinku ...((1) (2 1) (3 2 1) (4 3 2 1))
  • [~] flat ...: Usuń zagnieżdżanie listy i złóż operator konkatty łańcuchowej ... 1213214321

4

Haskell, 35 bajtów

f x=[1..x]>>= \y->[y,y-1..1]>>=show

Przykład użycia: f 6-> "121321432154321654321".

Dla wszystkich liczb xw 1 ... xliście x,x-1, ... ,1, zamień liczby na ciąg i połącz je w pojedynczy ciąg. Ponownie połącz te ciągi w jeden ciąg.


4

C89, 54 bajty

i,j;f(n){for(i=1;j<=n;j=i++)while(j)printf("%d",j--);}

56 -2 = 54 dzięki ErikGolfer!


Myślę, że możesz to zrobić (j=i++)zamiast (j=i)i usunąć ostatni i++(nieprzetestowany).
Erik the Outgolfer,

Oto krótsza wersja rekurencyjna: i,j;f(n){j=++i;while(j)printf("%d",j--);i-n?f(n):0;}(52 bajty)
Steadybox

@ Steadybox Możesz dodać to jako własną odpowiedź, jeśli chcesz, ale dziękuję!
kot

@cat Ok, dzięki, właśnie to zrobiłem. Nie byłem pewien, czy powinienem, ponieważ edytowałem tylko twoje rozwiązanie.
Steadybox,

4

Python 3, 87 92 83 74 bajty

lambda n:"".join(["".join([str(i)for i in range(1,k)][::-1])for k in range(1,n+2)])

Krótsza odpowiedź przy użyciu rekurencji:

f=lambda n:f(n-1)+"".join([str(i)for i in range(1,n+1)][::-1])if n>0else""

Może nie najkrótszy, ale jest wykonany tylko ze zrozumieniem listy Pythona!

(Edytowane w celu dodania funkcji drukowania i usunięcia \ n)

(Edytowane, aby usunąć funkcję drukowania i zmienić n + 1, k + 1 na n, k + 2)


Działa z k, n + 2, ale nie z k + 2, n, choć dzięki za pomysł :)
Sygmei

Kod, który oceniasz, powinien być pierwszy. Ponadto powinieneś użyć Python 2, a następnie użyć `i`zamiast str(i). I możesz użyć "".join(...)zamiast "".join([...])i, range(1,k,-1)aby usunąć [...][::-1].
mbomb007,

Ponadto, n>0może być n. I miałem na myśli range(n,0,-1). I użyj n and f(n-1)+...)or"".
mbomb007,

1
62 bajty . W rzeczywistości może to być zbyt blisko tej odpowiedzi .
mbomb007,

Tak, to się zbliża, widziałem, że po zrobieniu mojej drugiej wersji :(
Sygmei

3

Pyth, 8 bajtów

jks_M._S

Wyjaśnienie

jks_M._SQ   Implicit input
       SQ   Get the range [1, 2, ..., N]
     ._     Get each prefix
   _M       Reverse each prefix
jks         Join everything as a string


3

Mathematica, 36 bajtów

ToString/@(""<>Range[Range@#,1,-1])&

Zgłasza ostrzeżenia, które można bezpiecznie zignorować.

Wyjaśnienie

Wykorzystując dane wejściowe 5jako przykład:

Range@#

Tworzy zakres {1, 2, 3, 4, 5}.

Range[...,1,-1]

Rangejest na liście, więc możemy dać mu listę dowolnych argumentów, a on automatycznie przejdzie przez ten argument. To daje nam kilka odwróconych list:

{{1}, {2, 1}, {3, 2, 1}, {4, 3, 2, 1}, {5, 4, 3, 2, 1}}

Kolejny:

(""<>...)

To łączy zagnieżdżoną listę z pustym ciągiem. Ponieważ zagnieżdżona lista nie zawiera żadnych ciągów, nie może tak naprawdę łączyć wartości (w tym miejscu generowane są ostrzeżenia), ale ""<>ma efekt uboczny spłaszczania listy. To nam daje

1 <> 2 <> 1 <> 3 <> 2 <> 1 <> 4 <> 3 <> 2 <> 1 <> 5 <> 4 <> 3 <> 2 <> 1

Teraz pojawia się piękna funkcja Mathematica, która Mapnie dba o strukturę, nad którą mapuje. Zwykle stosuje się go do listy, ale działa z dowolną głową. f /@ h[a, b, c]po prostu daje h[f[a], f[b], f[c]]. W naszym przypadku głową jest, StringJoina wartości są liczbami całkowitymi.

ToString/@...

To po prostu zamienia liczby całkowite na ciągi. W tym momencie StringJoin[...]wie, co z nimi zrobić i łączy je wszystkie w jeden ciąg:

"121321432154321"

1
To po prostu paskudne. :)
Greg Martin

3

GolfScript , 14 bajtów

~,{),{)}%-1%}%

Wypróbuj online!

Oczywiście zwykła metoda, ale jest to GolfScript.

Objaśnienie tego fragmentu kodu VAST :

~,{),{)}%-1%}% # Code
               # Initial stack.      ["n"]
~              # Eval ToS.           [n]
 ,             # ToS' lowered range. [[0..n)]
  {),{)}%-1%}  # Block. 1 argument.  [a]
   )           # Increment.          [a+1]
    ,          # Range.              [[0..a)]
     {)}       # Block. 1 argument.  [b]
      )        # Increment.          [b+1]
        %      # Map.                [[1..a]]
         -1    # Integer. -1         [[1..a] -1]
           %   # Each nth element.   [[a..1]]
             % # Map.                [[[1],[2,1],...,[n..1]]]
               # Implicit output.    121...n..1

Zauważ, że wyjście jest w postaci pojedynczej liczby. Wleczenie \n.


3

R, 38 33 44 bajty

if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")

Pobiera dane wejściowe do STDIN i zapętla od 1 do n, tworząc sekwencję od i do 1 dla każdego kroku i drukując go.

Edit: zastąpiony seq(i,1)przez i:1oszczędność 5 bajtów i pokazując, dlaczego nie powinno golf podczas spotkań.


Wywołuje to, 101jeśli wejście jest 0. if((n=scan())>0)for(i in 1:n)cat(i:1,sep="")Zrób sztuczkę.
Frédéric,

Cholera, założono niezerową wartość wejściową :(
JAD

if(n<-scan())powinno wystarczyć.
Giuseppe,

3

MATL , 14 11 bajtów

:"@:P]v!VXz

Wypróbuj online!

Wyjaśnienie

:      % Input N implicitly. Push range [1 2 ...N]
"      % For each k in [1 2 ...N]
  @:   %   Push range [1 2 ... k]
  P    %   Reverse
]      % End
v!     % Concatenate all arrays horizontally
V      % Convert to string
Xz     % Remove spaces. Display implicitly

not split up by anything, nie sądzę, że drugi jest dozwolony.
JAD,

2
@JarkoDubbeldam Usunę ten, dopóki OP nie wyjaśni
Luis Mendo,

1
@Jarko OP wyjaśnił. Obecne rozwiązanie jest zgodne ze specyfikacją
Luis Mendo

3

pieprzenie mózgu, 17 bajtów

>,[>[+.>]+.[<]>-]

Wyjaśnienie

>           keep the first cell at 0
 ,          input of the decimal number into the cell
  [>        start a conditionnal loop and go to the next cell
   [+.>]    while it don't find 0, increment each cells and output the value
    +.      increment the new cell and output
     [<]    go to the first cell
      >-]   decrement the second cell and restart

Wypróbuj online!


Witamy w PPCG! Czy czytałeś już stronę z trasą i najgorętsze meta pytania? Radzę, są pomocne! Również zawiń swój kod w formatowaniu kodu! Czy przeczytałeś pomoc dotyczącą formatowania? Powinieneś także wyjaśnić, jak działa Twój kod, jeśli możesz!
devRicher,

@muddyfish Właśnie dodałem wyjaśnienie
Milihhard

Użyłem aplikacji mobilnej. Możesz zobaczyć ekran wyniku.
Milihhard,

Nie, w porządku. Ale w łączu wyjście jest w ascii, a nie dziesiętne, więc tak naprawdę nie widać wyniku
Milihhard

@muddyfish Twój bezpośredni link jest trochę mylący. Na wejściu jest niewidoczna wartość 0x06, po której następuje cyfra dziesiętna 6 .
Dennis,

3

Python , 63 57 59 bajtów

Rozwiązanie rekurencyjne, które działa zarówno w Pythonie 2, jak i 3. To prawdopodobnie można jeszcze pograć w golfa. Zapraszamy do gry w golfa! Wypróbuj online!

Edycja: -6 bajtów dzięki Jonathanowi Allanowi. +2 bajty z podziękowaniami dla mbomb007 za wskazanie problemu z moją odpowiedzią.

f=lambda n:n and f(n-1)+"".join(map(str,range(n,0,-1)))or""

Ungolfing

def f(n):
    s = ""
    for i in range(n+1):
        m = map(str, range(n, 0, -1))
        s += "".join(m)
    return s

2
Użyj a, mapaby zaoszczędzić 6 bajtów:lambda n:n and f(n-1)+"".join(map(str,range(n,0,-1)))or""
Jonathan Allan,

2

PHP, 35 34 33 bajtów

Zapisałem bajt, ponieważ przeliczyłem rachunki, dzięki Tytusowi! I kolejny!

while($i++<$argv[1])echo$s=$i.$s;

Uruchom z wiersza poleceń za pomocą -r.

Całkiem prosta odpowiedź, zapętla od 1 do naszego wejścia n, umieszczając numer na początku łańcucha i drukując go.


Liczę 34. Jeden bajt krótszy z przyrostem.
Tytus,

33 bajty:while($i++<$argv[1])echo$s=$i.$s;
aross

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.