Liczba Rien

38

Stała Champernowne to liczba konstruowana przez połączenie pierwszych nliczb z ntendencją do nieskończoności. Wygląda to mniej więcej tak:

0.123456789101112131415161718192021222324252627282930...

Teraz opiszę ci numer Rien . Można to uznać za minimalizację stałej Champernowne jako liczby całkowitej. Ja odnoszą się do Rien liczby z pierwszymi ncyframi, Ri ( n ). Oto jak to sformułować:

  1. Pierwsze nliczby naturalne (sekwencja {1,2,3, ...}) są łączone.
  2. Wynik ten jest następnie sortowany według wartości cyfrowej. Tak 1..12by wyglądało 011111223456789.
  3. Ponieważ Rien liczba nie może mieć zer, ruszamy wszystko 0jest tak, że są one znaczące, utrzymując liczbę zminimalizowane, co powoduje, powiedzmy 101111223456789. To jest Ri ( n ), w tym przypadku Ri (12).

Oto kilka wyników dla Ri ( n ):

n     Ri ( n )
1 1
2 12
3 123
7 1234567
9 123456789
10 10123456789
15 101111111223344556789
34 10001111111111111222222222222223333333334444555666777888999
42 100001111111111111122222222222222233333333333333444444455556666777788889999
45 100001111111111111122222222222222233333333333333344444444444555556666777788889999
55 10000011111111111111122222222222222223333333333333333444444444444444455555555555566666777778888899999
100 10000000000011111111111111111111222222222222222222223333333333333333333344444444444444444444555555555555555555556666666666666666666677777777777777777778778888888888888888899999999999999
999100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Cel Biorąc pod uwagę liczbę 1 ≤ n<10000 jako dane wejściowe (przez argumenty, STDIN lub kodowanie na stałe, jeśli twój język nie obsługuje konwencjonalnego wprowadzania), wyjście / powrót Ri ( n).

To jest , więc wygrywa najkrótszy kod w bajtach. Możesz używać języka, który został stworzony po tym konkursie, o ile nie został on stworzony do odpowiedzi na to wyzwanie. (Oczywiście możesz go użyć, jeśli stanowi ciekawe rozwiązanie, ale zaznacz swoją odpowiedź jako niekonkurującą).

Realizacja referencyjna

Przetestowałem to w IE, więc naprawdę nie powinno być problemu. Jeśli jest problem, istnieje proste rozwiązanie: zdobądź rozsądną przeglądarkę.

function min(n) {
  var seq = [];
  for(var i = 1; i <= n; i++) seq.push(i);
  seq = seq.join("").split("").map(Number);
  var to;
  if(seq.indexOf(1) >= 0) to = seq.splice(seq.indexOf(1), 1);
  seq.sort(function(a, b) {
    return a - b;
  });
  if(to) seq = to.concat(seq);
  return seq.join("");
}
t.onchange = t.onkeyup = function() {
  h.innerHTML = min(this.value)
}
* {
  font-family: Consolas, monospace;
}
input {
  border: 2px dotted #aaaaaa;
  border-radius: 5px;
  margin: 10px;
}
<input id="t" type="number">
<div id="h">


Tabela liderów

Fragment kodu na dole tego postu generuje katalog na podstawie odpowiedzi a) jako listy najkrótszych rozwiązań dla każdego języka oraz b) jako ogólnej tabeli wyników.

Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:

## Language Name, N bytes

gdzie Njest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:

## Perl, 43 + 2 (-p flag) = 45 bytes

Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

Conor O'Brien
źródło
22
Zawsze myślałem, że 0to numer Rien .
flawr
Nie jestem pewien, czy coś mi umknęło, ale możemy po prostu przesunąć jeden z nich 1przed nimi 0, tak?
FryAmTheEggman
@FryAmTheEggman Masz rację.
Conor O'Brien
@ MartinBüttner \ o / znalazłeś to.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Nie, ten był inny. Ten dopuszczał tylko permutacje całych liczb, a nie ich poszczególnych cyfr.
Martin Ender

Odpowiedzi:

12

Pyth, 8

+1SjktSQ

Tworzy listę, [1, .. , input]następnie usuwa wiodącą, łączy i sortuje, a następnie przygotowuje 1.

Pakiet testowy

FryAmTheEggman
źródło
13

Perl, 44 42 41 33 31 bajtów

Tak, pierwszy post w historii!

Dzięki primo za 2 bajty.

print 1,sort"@{[2..<>]}"=~/\d/g

Podobnie jak inni, usunięcie 1 i ręczne przygotowanie go działa.

Wypróbuj online

Paul Picard
źródło
2
Witaj w PPCG i gratuluję pierwszego postu (choć wydaje się dziwne, że witam cię, ponieważ dołączyłeś, zanim to zrobiłem ...). Dwie rzeczy - liczę 43 bajty ... po drugie, link „Wypróbuj online” wskazuje na starszą / inną wersję twojego kodu. Ręczne kopiowanie i wklejanie kodu do Ideone działa, ale nie twój link.
AdmBorkBork
Dziękuję za twój komentarz ! Użyłem TextWrangler do liczenia bajtów, chyba poszedłem o 1 za daleko ... (plus spacja nie była potrzebna, więc zmniejsza cały bajt do 42). Ideone należy teraz naprawić.
Paul Picard
Och, nie wiedziałem o tym. Działa również na moim Perlu na moim Macu (5.18) Dzięki!
Paul Picard
2
Zaoszczędzono dwa bajty, pozbywając się podziału / przyłączenia:print 1,sort"@{[2..<>]}"=~/\d/g
primo
11

Japt, 14 12 bajtów

1+2o°U ¬¬n ¬

Wypróbuj online!

Jak to działa

1+2o°U ¬¬n ¬  // Implicit: U = input integer
  2o°U        // Generate the range of integers from 2 to U, inclusive.
       ¬¬     // Join, then split into chars.
         n    // Sort.
1+         ¬  // Join again, and add a 1 to the beginning.
              // Implicit: output last expression
ETHprodukcje
źródło
4
o_o grałeś w golfa w 5-minutowym okresie karencji? najszybszy pistolet na zachodzie
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Zgaduję, że nie chcesz po tym publikować nowych golfów z kodem: D
Pierre Arlaud
9

Siatkówka , 78 bajtów

Czas pochwalić się niektórymi nowymi funkcjami Retina (wciąż nie jest zbyt konkurencyjny, ale do dziś prawdopodobnie byłby bliższy 300 bajtów).

.+
$0$*1
\B
 $`
(1)+
$#1
^1| 

.
 1$0$*1
+r`(1+\2) (1+)\b
$2 $1
 1(1)*
$#1
^
1

Wypróbuj online.

Wyjaśnienie

Chociaż można teraz całkiem wygodnie konwertować między dziesiętną i jednostkową, jest to wciąż dość długie, ponieważ muszę konwertować kilka razy tam iz powrotem, ponieważ niektóre operacje są bardziej wykonalne w systemie dziesiętnym niż w jednostkowym i odwrotnie.

.+
$0$*1

Zacznijmy od konwersji danych wejściowych na jednoargumentowy. Działa to poprzez dopasowanie wejścia, a następnie użycie tego, $*1który powtarza 1to wiele razy (ta funkcja powtarzania jest nowa od dzisiaj).

\B
 $`

Następnie generujemy zakres od 1do Nw unarnym. Wyjaśniłem, dlaczego to działa w mojej odpowiedzi na FizzBuzz .

(1)+
$#1

Konwertujemy każdą liczbę z zakresu z powrotem na dziesiętne, abyśmy mogli pracować z cyframi dziesiętnymi. Odbywa się to poprzez dopasowanie każdej z liczb jednostkowych, tak aby każda 1generowała osobne przechwytywanie. Następnie zamieniamy to liczbą przechwyceń z grupy pierwszej, stosując nową składnię zliczania przechwytywania $#1.

^1| 

Spowoduje to usunięcie wiodącego 1oraz wszystkich spacji z łańcucha, więc pozostały nam tylko cyfry (z wyjątkiem jednego 1).

.
 1$0$*1

Konwertujemy z powrotem na jednoargumentowe i dodajemy 1do każdej cyfry (aby upewnić się, że parzyste 0jest niepuste). Wstawiamy również spację przed każdą cyfrą, aby zapewnić ich separację.

+r`(1+\2) (1+)\b
$2 $1

Wielokrotnie dopasowujemy małą liczbę poprzedzoną większą liczbą i zamieniamy je. To jest sortowanie bąbelkowe w Retinie. :)

 1(1)*
$#1

Aaa i powrót do miejsca po przecinku.

^
1

Na koniec wstawiamy jeden 1z przodu, aby uwzględnić ten, który usunęliśmy wcześniej.

Martin Ender
źródło
1
O jakich nowych funkcjach mówisz?
Conor O'Brien
1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Później dodam wyjaśnienie. Ten wykorzystuje nową składnię podstawiania do zliczania przechwytywania i powtarzania znaków, których można użyć do stosunkowo krótkiej konwersji dziesiętnej / jednostkowej. Oto pełny dziennik
Martin Ender
@ MartinBüttner nice. Czy to oznacza, że ​​Retina nie może już ubiegać się o to wyłączenie ?
Cyfrowy uraz
@DigitalTrauma Myślę, że nadal jest to najbardziej naturalna forma wprowadzania danych. Nigdy też nie rozumiałem, w jaki sposób tego rodzaju język uzyskał tak duże wsparcie na tej stronie.
Martin Ender
6

Haskell, 44 bajty

import Data.List
f n='1':sort(show=<<[2..n])

Niestety sortjest Data.List, to 17 bajtów!

nimi
źródło
6

JavaScript (ES6), 65 62 54 52 bajty

Zaoszczędzono 3 bajty dzięki edc65

x=>eval("for(b='';x>1;)1+[...b+=x--].sort().join``")

Tworzy ciąg wszystkich liczb od 2 do x, a następnie dzieli, sortuje, łączy i dodaje 1 na początku. To może być nadal możliwe do gry w golfa; sugestie mile widziane!

ETHprodukcje
źródło
Nie mam pod ręką ES6, ale nie możesz po prostu użyć (nowego) Array(x-1).map((_,y)=>y+2)?
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ mapa pomiń puste elementy tablicy, więc powinieneś użyć Array(n).fill().map(...(patrz wskazówki ES6)
edc65
Za późno na opublikowanie mojego, ale wskazówka dla ciebie: n=>1+[...[...Array(n-1)].map(_=>++n,n=1).join``].sort().join`` (1 bajt krótszy, to podział)
edc65
@ edc65 i Cᴏɴᴏʀ O'Bʀɪᴇɴ Dzięki za wskazówki! Zastanawiałem się, dlaczego używanie .split()było tak dziwne ...
ETHproductions
@ edc65 Huh, moje rozwiązanie ma taką samą długość jak twoje:n=>1+[...[...Array(n+1).keys()].slice(2).join``].sort().join``
Neil
5

Mathematica, 52 bajty

"1"<>ToString/@Sort[Join@@IntegerDigits[2~Range~#]]&

Ponownie nastąpiło przetwarzanie ciągów ...

LegionMammal978
źródło
Myślę, że IntegerDigitswątki nad listami, więc nie trzeba go mapować.
Martin Ender
No jasne, pierwszeństwo.
Martin Ender
4

APL (17)

'1',∆[⍋∆←1↓∊⍕¨⍳⎕]

Wyjaśnienie:

'1',∆[⍋∆←1↓∊⍕¨⍳⎕]
-----------------
               ⎕   read a number from the keyboard
               ⍳    get the natural numbers up to and including that number
             ⍕¨    get the string representation for each number
           ∊       flatten the array (giving a string of digits)
         1↓        remove the first digit (which is always 1)
       ∆←          store the result in ∆
      ⍋            get a permutation to sort ∆ upwards
    ∆[           ] rearrange ∆ so that it is sorted
'1',               add a 1 to the front

Test:

      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      1
1
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      10
10123456789
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      55
10000011111111111111122222222222222223333333333333333444444444444444455555555555566666777778888899999
marinus
źródło
Miły! O wiele lepszy niż mój. : DI nie zdawałem sobie sprawy, że spłaszczy tablicę i da ci ciąg. Dobrze wiedzieć.
Alex A.
3

Python 2, 60 bajtów

_="".join;print"1"+_(sorted(_(map(str,range(2,input()+1)))))
niebieski
źródło
3

ClojureScript, 48 bajtów

#(apply str"1"(sort(apply str(range 2(inc %)))))

Tak samo jak wszystkie inne. REPL dostępny tutaj .

MattPutnam
źródło
3

Rubinowy, 48 bajtów

Anonimowa funkcja. Zasadniczo po prostu Rubyfied kilka innych odpowiedzi tutaj ..

->n{n>1?(?1+[*2..n].join.chars.sort*'').to_i: n}
daniero
źródło
3

Brachylog , 76 41 bajtów

1 .;{,1:.e?}?:1fcbZlL,ZoOlM,10^(L-M)=:Oc.

Pobiera na wejściu liczbę.

To rozwiązanie działa z kilkoma zmianami, które wprowadziłem we wbudowanym predykacie Findall f. OP najwyraźniej jest w porządku, używając języków starszych niż odpowiedź, więc myślę, że to jest w porządku (zmiany, które wprowadziłem, były zamierzone dawno temu, po prostu zmotywowałem się do tego z powodu tego wyzwania).

Wyjaśnienie

1 .                                            § If the input is 1, unify output with 1

   ;                                           § Else

    {      }?:1f                               § Output a list of all inputs which satisfy
                                               § the predicate in brackets with the input
                                               § of the main predicate (ie the input number)
                                               § as output

     ,1:.e?                                    § True if the input is an integer between 1
                                               § and . (the output)

                cbZ                            § Concatenate everything into a single number,
                                               § remove the first digit (1) and call it Z

                   lL,ZoOlM,                   § L is the length of Z, M is the length of O
                                               § O being Z sorted (which removes the leading
                                               § 0s)

                            10^(L-M)=:Oc.      § Concatenate 10^(L-M) at the beginning of O
                                               § and unify it with the output
Fatalizować
źródło
3

Smalltalk, 76 bajtów

Jak zwykle w Smalltalk, koncepcyjnie bardzo zwięzły, ale tekstowo bardzo gadatliwy ...

f:l^'1',((2to:l)fold:[:p :q|p asString,q asString])asByteArray sort asString

Dodaj to jako metodę klasową Stringi wywołaj w ten sposób, np. Dla 20,String f: 20


źródło
3

Narzędzia Bash + GNU, 58

seq $1|sed 's/./&\n/g'|sort|tr -d \\n|sed 's/\(0*\)1/1\1/'

Wypróbuj online.

Cyfrowa trauma
źródło
1
Miałem podobne podejście, ale inne podejście do części „1 na początku” (52 bajty). Dzięki niemu możesz się golić: sortuj (1 cyfra, bez potrzeby używania -n).
Olivier Dulac
3

Bash, 35 34 bajtów

printf %d 1`seq 2 $1|fold -1|sort`

Opiera się to na odpowiedziach @DigitalTrauma i @OlivierDulac . Wypróbuj online z Ideone .

Jak to działa

  • seq 2 $1wypisuje wszystkie liczby całkowite od 2 do podanych w wierszu poleceń.

  • fold -1 otacza wszystkie linie o szerokości 1, tzn. umieszcza każdy znak na osobnej linii.

    -1 wydaje się być nieudokumentowaną funkcją.

  • sort sortuje znaki według ich wartości liczbowej.

  • printf %d 1`...`​wstawia 1 do pierwszego wiersza i wypisuje każdy wiersz jako liczbę całkowitą ( %d), bez separacji.

    Wykorzystuje to ciekawą implementację printf Basha, która powtarza ciąg formatu w kółko, aż wszystkie argumenty zostaną zużyte.

Dennis
źródło
+1, podoba mi się ten bardziej niż nasz :)
Olivier Dulac
3

JavaScript ES6, 49 46 bajtów

Dzięki edc65 za 2 bajty

F=
x=>1+[...(g=_=>x>1?x--+g``:_)``].sort().join``

;console.log(F(15))

l4m2
źródło
1
Mam coś podobnego, ale o 1 bajt krótszy. Spróbuj użyć funkcji rekurencyjnej bez argumentu, po prostu zmniejszając oryginalny parametr x
edc65
2

Julia, 33 bajty

n->"1"*join(sort([join(2:n)...]))

Jest to funkcja lambda, która przyjmuje liczbę całkowitą i zwraca ciąg znaków. Aby go wywołać, przypisz go do zmiennej.

Konstruujemy zakres 2:n, który będzie pusty dla n<2, łączymy go w ciąg, splatamy ciąg w tablicę znaków, sortujemy je, łączymy w ciąg i poprzedzamy 1.

Alex A.
źródło
2

APL, 21 bajtów

{' '~⍨⍕1,x[⍋x←⍕1↓⍳⍵]}

Jest to nienazwana funkcja monadyczna, która akceptuje liczbę całkowitą po prawej stronie i zwraca ciąg znaków. Aby go wywołać, przypisz go do zmiennej.

Wyjaśnienie:

            x←⍕1↓⍳⍵]}   ⍝ Get the numbers 1:input, drop 1, convert to string
         x[⍋            ⍝ Sort
      ⍕1,               ⍝ Tack 1 onto the front, flatten to string
{' '~⍨                  ⍝ Remove the spaces (side effect of ⍕ on an array)

Wypróbuj online

Alex A.
źródło
2

Python 2, 60 bajtów

P=input();print"1"+"".join(sorted(`range(2,P+1)`)[P*2-4:-2])

Indeksowanie dla wygranej. :-)


Python 2, 60 bajtów

P=input();print"1"+"".join(sorted(`range(-P,-1)`))[P*3-5:-2]

Po prostu alternatywa.

Zach Gates
źródło
2

Droga Mleczna 1.6.4 , 22 bajty (nie konkuruje)

^^'LH=^^JB", "-Q"1";+!

Musiałem dodać kod sortowania dla tego wyzwania.


Wyjaśnienie

^^                      ` pop the TOS
  '                     ` read input from the command line
   LH                   ` push a reversed Pythonic range(TOS+1)
     =^^J               ` remove the top 2 items from the TOS
         B              ` push the string literal of the TOS
          ", "-         ` remove ", " from the TOS
               Q        ` sort the TOS
                "1";+   ` add "1" to the beginning of the TOS
                     !  ` output the TOS
Zach Gates
źródło
2

Poważnie, 10 bajtów

,u2xεjS'1+

Hex Dump:

2c753278ee6a5327312b

Wypróbuj online

Wyjaśnienie:

,            Read input
 u2x         Push range from 2..n
    εj       Join into string
      S      Sort
       '1+   Prepend a "1"
kwintopia
źródło
2

Narzędzia Bash i GNU, 58 52 bajtów

echo 1$(seq 2 $1|sed -e 's/./&\n/g'|sort|tr -d \\n)
Olivier Dulac
źródło
podobne podejście niż @ Cyfrowa trauma, ale inny sposób na dodanie 1, i nie ma potrzeby używania -n, ponieważ liczby mają długość 1 cyfry. (Zobaczyłem jego odpowiedź po mojej pierwszej próbie)
Olivier Dulac
2

PowerShell, 61 59 bajtów

param($a)(("1"+-join([char[]]-join(2..$a)|sort)),1)[$a-eq1]

Pobiera dane wejściowe, param($a)a następnie używa ich do indeksowania w tablicy za pomocą [$a-eq1]. Jeśli true, indeksujemy drugi element i dane wyjściowe 1. W przeciwnym razie łączymy się "1"z jointablicą ed utworzoną przez 1) definiując nowy zakres 2..$a, który sam został joinedytowany razem, 2) rzutując go jako tablicę char, i 3) wysyłając go przez Sort-Objectcmdlet, z których wszystkie są następnie wyprowadzane.

Edycja 1 - Zapisano 2 bajty, przesuwając -joinoperator wewnętrzny .

AdmBorkBork
źródło
2

Gogh , 9 7 bajtów

GJT1-1P

Możesz uruchomić to za pomocą:

$ ./gogh noi 'GJT1-1P' <input>

G     “ Push a range (1, TOS]       ”
J     “ Join the TOS                ”
T     “ Sort the TOS                ”
1-    “ Remove the first 1          ”
P     “ Prepend the TOS to the STOS ”
Zach Gates
źródło
„Możesz używać języka, który został stworzony po tym konkursie, o ile nie został on stworzony do odpowiedzi na to wyzwanie”. Zazwyczaj pozwalam takim językom na konkurowanie;)
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ: Och, świetnie! Dzięki za zwrócenie na to uwagi :)
Zach Gates
2

Galaretka , 8 bajtów

RDFṢ1œ|Ḍ

Wypróbuj online!

Jak to działa

RDFṢ1œ|Ḍ  Main link. Argument: n (integer)

R         Range; yield r := [1, ..., n].
 D        Convert each k in r into the array of its digits in base 10.
  F       Flatten the resulting array of lists.
   Ṣ      Sort the resulting flat list of digits.
    1œ|   Perform multiset union with 1 as left argument.
          This moves a single 1 to the beginning of the list.
       Ḍ  Convert the resulting list of base 10 to integer.
Dennis
źródło
2

Oracle SQL 11.2, 222 211 bajtów

SELECT 1||TRIM(xmlagg(xmlelement(e,c)).EXTRACT('//text()'))FROM(SELECT SUBSTR(s,LEVEL+2,1)c FROM(SELECT MAX(sys_connect_by_path(LEVEL,' '))s FROM DUAL CONNECT BY LEVEL<=:1)CONNECT BY LEVEL<=LENGTH(s)ORDER BY 1);

Nie grał w golfa

SELECT 1||TRIM(xmlagg(xmlelement(e,c)).EXTRACT('//text()'))  -- add leading 1, concatenate each char and remove spaces
FROM   (
         SELECT SUBSTR(s,LEVEL+2,1)c                          -- split the string in characters, omiting the first number (1)   
         FROM   (
                  SELECT MAX(sys_connect_by_path(LEVEL,' '))s -- create a string by concatenating numbers
                  FROM   DUAL 
                  CONNECT BY LEVEL<=:1
                )
         CONNECT BY LEVEL<=LENGTH(s)ORDER BY 1
       )
Jeto
źródło
2

MATL , 17 bajtów

Używa bieżącej wersji (7.0.0) języka / kompilatora.

49[]i:"@YUh]6L)Sh

Zainspirowany odpowiedzią FryTheEgggman .

EDYCJA (29 lipca 2016 r.): Możesz wypróbować online z pewnymi modyfikacjami, aby dostosować się do zmian w języku.

Przykład

>> matl
 > 49[]i:"@YUh]6L)Sh
 >
> 12
101111223456789

Wyjaśnienie

49        % push '1'
[]        % push empty array
i:        % input "N" and build vector [1, 2, ... N]
"         % for each number in this vector
   @      % push that number
   YU     % convert to string
   h      % concatenate horizontally
]         % end
6L)       % remove first element
S         % sort
h         % concatenate horizontally
Luis Mendo
źródło
1

05AB1E , 6 bajtów

Uwaga: w tym zgłoszeniu wykorzystano funkcje, które datują to wyzwanie i dlatego nie są konkurencyjne

Kod:

Lß?J{?

Wyjaśnienie:

L      # Creates the list [1 .. input]
 ß     # Extract the smallest value of the list
  ?    # Print this value (always 1)
   J   # ''.join(list)
    {  # Sort the string
     ? # Print this value

Wykorzystuje kodowanie ISO 8859-1

Adnan
źródło
Jak to działa?
lirtosiast
@ThomasKwa Dodano wyjaśnienie
Adnan
Whoa. To jest fantastyczne!
Conor O'Brien
1

Mathcad, 86 „bajtów”

Funkcja s (n) używa pętli for do budowania „liczby całkowitej” Champernowne poprzez konwersję każdej liczby do postaci łańcucha i łączenie ich razem. Łańcuch jest następnie konwertowany na równoważny wektor kodów ASCII i sortowany. Następnie funkcja zamienia wszystkie zera wiodące na pierwsze, ostatecznie przekształcając wektor z powrotem na ciąg.

Aby sprawdzić funkcję, umieściłem przypadki testowe w wektorze vn, a następnie zastosowałem s do vn za pomocą operatora wektoryzacji. Następnie porównuję wyniki z podanymi wartościami przypadków testowych.

wprowadź opis zdjęcia tutaj


Mathcad to aplikacja matematyczna oparta na arkuszach 2D składających się z „regionów”, z których każdy może być tekstem, wyrażeniem matematycznym, programem, fabułą lub komponentem skryptowym.

Instrukcja matematyczna lub programowa jest wybierana z paska narzędzi palety lub wprowadzana za pomocą skrótu klawiaturowego. Do celów gry w golfa przyjmuje się, że operacja („bajt”) to liczba operacji na klawiaturze niezbędnych do utworzenia nazwy lub wyrażenia (na przykład, aby ustawić zmienną a na 3, napisalibyśmy a: = 3. Operator definicji . 1 bajt.

Stuart Bruff
źródło