Die Rien-Nummer


38

Die Champernowne-Konstante ist eine Zahl, die durch Verketten der ersten nZahlen mit nTendenz zur Unendlichkeit konstruiert wird . Es sieht ungefähr so ​​aus:

0.123456789101112131415161718192021222324252627282930...

Nun werde ich Ihnen die Rien- Nummer beschreiben. Es kann als Minimierung der Champernowne-Konstante als Ganzzahl betrachtet werden. Ich beziehe mich auf die Rien- Nummer mit den ersten nZiffern als Ri ( n ). So formulieren Sie es:

  1. Die ersten nnatürlichen Zahlen (die Folge {1,2,3, ...}) werden verkettet.
  2. Dieses Ergebnis wird dann nach dem Ziffernwert sortiert. So 1..12würde es aussehen 011111223456789.
  3. Da die Rien- Zahl keine führenden Nullen haben kann, verschieben wir alle 0s so, dass sie signifikant sind, während die Zahl minimiert bleibt 101111223456789. Dies ist Ri ( n ), in diesem Fall Ri (12).

Hier sind einige Ergebnisse für Ri ( n ):

n     Ri ( n )
1 1
2 12
3 123
7 1234567
9 123456789
10 10123456789
15 101111111223344556789
34 1000111111111112222222222222233333334444555666777888999
42 10000111111111111222222222222233333333333333444444455556666777788889999
45 10000111111111111222222222222233333333333333344444444444555556666777788889999
55 100000111111111111111222222222222223333333333333344444444444444555555555566666777778888899999
100 10000000000011111111111111111111222222222222222222223333333333333333334444444444444444444455555555555555556666666666666666667777777777777777777779999998888888888888888889999
999100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Ziel Bei einer Zahl von 1 ≤ n<10000 als Eingabe (über Argumente, STDIN oder Hardcoding, wenn Ihre Sprache keine konventionelle Eingabe unterstützt), geben Sie Ri ( n) aus / zurück .

Dies ist ein , also gewinnt der kürzeste Code in Bytes. Sie können eine Sprache verwenden, die nach diesem Wettbewerb erstellt wurde, sofern sie nicht für die Beantwortung dieser Herausforderung erstellt wurde. (Natürlich können Sie können es verwenden, wenn es eine interessante Lösung bietet, sondern markieren Sie Ihre Antwort als nicht konkurrieren.)

Referenzimplementierung

Ich habe das im IE getestet, es sollte also wirklich kein Problem geben. Wenn es ist ein Problem, gibt es eine einfache Lösung: einen gesunden Browser erhalten.

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">


Bestenliste

Das Stapel-Snippet am Ende dieses Beitrags generiert den Katalog aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamt-Bestenliste.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

## Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

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

Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

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

Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:

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


22
Ich habe immer gedacht, 0ist die Rien- Nummer.
Fehler

Ich bin mir nicht sicher, ob ich etwas vermisse, aber wir können einfach eines der 1s vor das 0s stellen, ja?
FryAmTheEggman

@FryAmTheEggman Sie sind richtig.
Conor O'Brien

@ MartinBüttner \ o / du hast es gefunden.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Nein, das war anders. Dieser erlaubte nur die Permutation der ganzen Zahlen, nicht der einzelnen Ziffern.
Martin Ender

Antworten:


12

Pyth, 8

+1SjktSQ

Erstellt eine Liste, [1, .. , input]entfernt dann die führende, fügt sich hinzu, sortiert und stellt eine 1 voran.

Test Suite


13

Perl, 44 42 41 33 31 Bytes

Yaaay, erster Post überhaupt!

Danke an primo für die 2 Bytes sparen.

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

Wie bei anderen funktioniert es auch, wenn Sie 1 entfernen und manuell voranstellen.

Probieren Sie es online aus


2
Willkommen bei PPCG, und herzlichen Glückwunsch zu Ihrem ersten Beitrag (obwohl es seltsam erscheint, wenn ich Sie begrüße, seit Sie vor mir beigetreten sind ...). Zwei Dinge - ich zähle 43 Bytes ... Zweitens scheint Ihr "Online testen" -Link auf eine ältere / andere Revision Ihres Codes zu verweisen. Das manuelle Einfügen Ihres Codes in Ideone funktioniert, nicht jedoch in Ihren Link.
AdmBorkBork

Vielen Dank für Ihren Kommentar! Ich habe TextWrangler für die Byteanzahl verwendet, schätze ich bin 1 zu weit gegangen ... (plus ein Leerzeichen wurde nicht benötigt, so dass die gesamte Byteanzahl auf 42 reduziert wird). Das Ideone sollte jetzt behoben sein.
Paul Picard

Oh, das wusste ich nicht. Funktioniert auch auf meinem Perl auf meinem Mac (5.18) Danke!
Paul Picard


2
Zwei Bytes gespart, indem der Split / Join print 1,sort"@{[2..<>]}"=~/\d/g
beseitigt wurde

11

Japt, 14 12 Bytes

1+2o°U ¬¬n ¬

Probieren Sie es online!

Wie es funktioniert

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

4
o_o haben Sie es in der 5-minütigen Schonfrist gespielt? schnellste Waffe im Westen
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Ich nehme an, Sie möchten danach keine neuen Code-Golfs mehr veröffentlichen: D
Pierre Arlaud

9

Netzhaut , 78 Bytes

Es ist Zeit, einige neue Retina-Funktionen vorzustellen (es ist immer noch nicht sehr wettbewerbsfähig, aber bis heute wäre dies wahrscheinlich näher an 300 Bytes gewesen).

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

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

Probieren Sie es online aus.

Erläuterung

Das Konvertieren zwischen dezimal und unär ist zwar jetzt recht bequem möglich, aber es ist immer noch ziemlich lang, da ich mehrmals hin und her konvertieren muss, da einige Operationen in dezimal besser möglich sind als in unär und umgekehrt.

.+
$0$*1

Beginnen wir mit der Konvertierung der Eingabe in Unary. Dies funktioniert durch die Eingabe passende und dann mit $*1welcher wiederholt , 1dass viele Male (diese Wiederholung Funktion ist neu , wie von heute).

\B
 $`

Als nächstes generieren wir einen Bereich von 1bis Nin unary. Ich habe in meiner FizzBuzz-Antwort erklärt, warum dies funktioniert .

(1)+
$#1

Wir konvertieren jede Zahl im Bereich zurück in eine Dezimalzahl, damit wir mit den Dezimalstellen arbeiten können. Dies erfolgt durch Abgleichen jeder der unären Zahlen, sodass jede 1eine separate Erfassung generiert. Dann ersetzen wir dies durch die Anzahl der Erfassungen der ersten Gruppe unter Verwendung der neuen Syntax für die Erfassungsanzahl $#1.

^1| 

Dadurch werden sowohl die führenden 1als auch alle Leerzeichen aus der Zeichenfolge entfernt, sodass nur die Ziffern übrig bleiben (mit Ausnahme einer einzelnen 1).

.
 1$0$*1

Wir konvertieren zurück zu unary und addieren 1zu jeder Ziffer (um sicherzustellen, dass even 0nicht leer ist). Wir fügen außerdem vor jeder Ziffer ein Leerzeichen ein, um sicherzustellen, dass sie getrennt sind.

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

Wir passen wiederholt eine kleine Zahl an, der eine größere Zahl vorangestellt ist, und tauschen sie aus. Das ist eine Art Blase in der Netzhaut. :)

 1(1)*
$#1

Aaaund zurück zur Dezimalzahl.

^
1

Schließlich fügen wir 1vorne eine einzelne ein, um die zuvor entfernte zu berücksichtigen.


1
Von welchen neuen Funktionen sprichst du?
Conor O'Brien

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ich werde später eine Erklärung hinzufügen. Diese verwendet eine neue Substitutionssyntax zum Zählen von Captures und sich wiederholenden Zeichen, die für eine einigermaßen kurze Dezimal- / Unärkonvertierung verwendet werden können. Hier ist das vollständige Changelog: github.com/mbuettner/retina/blob/master/CHANGELOG.md
Martin Ender

@ Martinbüttner nett. Bedeutet das, dass Retina diese Ausnahme nicht mehr beanspruchen kann ?
Digital Trauma

@DigitalTrauma Ich denke, es ist immer noch die natürlichste Form der Eingabe. Ich habe auch nie verstanden, wie diese Art von Sprach-Ismus auf dieser Seite jemals so viel Unterstützung fand.
Martin Ender

6

Haskell, 44 Bytes

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

Leider sortist in Data.List, das sind 17 Bytes!


6

JavaScript (ES6), 65 62 54 52 Byte

3 Bytes gespart dank edc65

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

Erstellt eine Zeichenfolge aller Zahlen von 2 bis x, teilt, sortiert, verknüpft und fügt am Anfang eine 1 hinzu. Dies kann immer noch Golf sein; Vorschläge willkommen!


Ich habe kein ES6 zur Hand, aber können Sie es nicht einfach benutzen (neu) Array(x-1).map((_,y)=>y+2)?
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Karte überspringen leere Array-Elemente, so sollten Sie verwenden Array(n).fill().map(...(siehe ES6-Tipps)
edc65

Für meinen Beitrag ist es zu spät, aber ein Hinweis für Sie: n=>1+[...[...Array(n-1)].map(_=>++n,n=1).join``].sort().join`` (1 Byte kürzer, es ist der Split)
edc65

@ edc65 und Cᴏɴᴏʀ O'Bʀɪᴇɴ Danke für die Tipps! Ich fragte mich, warum ich .split()fühlte mich so seltsam ...
ETHproductions

@ edc65 Huh, ist meine Lösung die gleiche Länge wie deine:n=>1+[...[...Array(n+1).keys()].slice(2).join``].sort().join``
Neil


5

Mathematica, 52 Bytes

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

Wieder einmal passierte die String-Verarbeitung ...


Ich denke, IntegerDigitsThreads über Listen, so dass Sie es nicht zuordnen müssen.
Martin Ender

Oh richtig, Vorrang.
Martin Ender

4

APL (17)

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

Erläuterung:

'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

Prüfung:

      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      1
1
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      10
10123456789
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      55
10000011111111111111122222222222222223333333333333333444444444444444455555555555566666777778888899999

Nett! Viel besser als meins. : DI wusste nicht, dass dies das Array verflachen und Ihnen einen String geben würde. Das ist gut zu wissen.
Alex A.

3

Python 2, 60 Bytes

_="".join;print"1"+_(sorted(_(map(str,range(2,input()+1)))))

3

ClojureScript, 48 Bytes

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

So wie alle anderen auch. REPL hier erhältlich .


3

Ruby, 48 Bytes

Eine anonyme Funktion. Grundsätzlich nur einige der anderen Antworten hier Rubyfied ..

->n{n>1?(?1+[*2..n].join.chars.sort*'').to_i: n}

3

Brachylog , 76 41 Bytes

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

Nimmt eine Zahl als Eingabe.

Diese Lösung funktioniert mit den wenigen Änderungen, die ich am integrierten Findall-Prädikat vorgenommen habe f. OP ist anscheinend in Ordnung, wenn Sprachen verwendet werden, die älter sind als die Antwort, daher denke ich, dass dies in Ordnung ist (die Änderungen, die ich vorgenommen habe, waren vor langer Zeit beabsichtigt, ich habe mich nur selbst motiviert, dies aufgrund dieser Herausforderung zu tun).

Erläuterung

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

3

Smalltalk, 76 Bytes

Wie in Smalltalk üblich, konzeptuell sehr knapp, aber textlich sehr wortreich ...

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

Füge dies als Klassenmethode für hinzu Stringund rufe so auf, zB für 20,String f: 20


3

Bash + GNU-Dienstprogramme, 58

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

Probieren Sie es online aus.


1
Ich hatte einen ähnlichen Ansatz, aber eine andere Behandlung des Teils "1 am Anfang" (52 Bytes). Mit deiner kannst du dich abschneiden: sortieren (1 Ziffer lang, keine Notwendigkeit für -n).
Olivier Dulac

3

Schlag, 35 34 Bytes

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

Dies baut auf den Antworten von @DigitalTrauma und @OlivierDulac auf . Probieren Sie es online mit Ideone .

Wie es funktioniert

  • seq 2 $1Gibt alle Ganzzahlen von 2 bis zu der in der Befehlszeile angegebenen Zahl aus .

  • fold -1 bricht alle Zeilen mit der Breite 1 um, dh platziert jedes Zeichen in einer eigenen Zeile.

    -1 scheint ein undokumentiertes Feature zu sein.

  • sort sortiert die Zeichen nach ihrem numerischen Wert.

  • printf %d 1`...`​Stellt der ersten Zeile eine 1 voran und gibt jede Zeile als Ganzzahl ( %d) ohne Trennung aus.

    Dies nutzt die neugierige printf-Implementierung von Bash, die die Formatzeichenfolge immer wieder wiederholt, bis alle Argumente verbraucht sind.


+1, ich mag das besser als bei uns :)
Olivier Dulac

3

JavaScript ES6, 49 46 Bytes

Danke an edc65 für 2 Bytes

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

;console.log(F(15))


1
Ich habe etwas Ähnliches, aber 1 Byte kürzer. Versuchen Sie es mit einer rekursiven Funktion ohne Argument, indem Sie den ursprünglichen Parameter x
edc65

2

Julia, 33 Bytes

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

Dies ist eine Lambda-Funktion, die eine Ganzzahl akzeptiert und eine Zeichenfolge zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.

Wir konstruieren den Bereich 2:n, der für n<2 leer sein wird , fügen ihn zu einem String zusammen, teilen den String in ein Array von Zeichen auf, sortieren sie, fügen ihn zu einem String zusammen und stellen 1 voran.


2

APL, 21 Bytes

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

Dies ist eine unbenannte monadische Funktion, die eine Ganzzahl rechts akzeptiert und eine Zeichenfolge zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.

Erläuterung:

            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)

Probieren Sie es online aus


2

Python 2, 60 Bytes

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

Indizierung für den Gewinn. :-)


Python 2, 60 Bytes

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

Nur eine Alternative.


2

Milchstraße 1.6.4 , 22 Bytes (nicht konkurrierend)

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

Ich musste einen Sortier-Opcode für diese Herausforderung hinzufügen.


Erläuterung

^^                      ` 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

2

Im Ernst, 10 Bytes

,u2xεjS'1+

Hex Dump:

2c753278ee6a5327312b

Probieren Sie es online

Erläuterung:

,            Read input
 u2x         Push range from 2..n
    εj       Join into string
      S      Sort
       '1+   Prepend a "1"

2

Bash- und GNU-Tools, 58 52 Bytes

echo 1$(seq 2 $1|sed -e 's/./&\n/g'|sort|tr -d \\n)

ähnlicher Ansatz wie bei @ Digital-trauma, aber andere Methode zum Hinzufügen der 1, und keine Notwendigkeit für -n, da Zahlen eine Ziffer lang sind. (Ich habe seine Antwort nach meinem ersten Versuch gesehen)
Olivier Dulac

2

Power, 61 59 Bytes

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

Nimmt Eingaben auf param($a)und verwendet sie dann zum Indizieren in ein Array mit [$a-eq1]. Wenn true, indizieren wir das zweite Element und geben es aus 1. Andernfalls verknüpfen wir uns "1"mit dem joined-Array, das erstellt wird, indem 1) ein neuer Bereich definiert wird 2..$a, der selbst joinzusammengefügt wurde, 2) dieser als char-Array umgewandelt wird und 3) er über das Sort-ObjectCmdlet gesendet wird, das dann ausgegeben wird.

Edit1 - Speichert 2 Bytes durch Verschieben des inneren -joinOperators.


2

Gogh , 9 7 Bytes

GJT1-1P

Sie können dies ausführen mit:

$ ./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 ”

"Sie können eine Sprache verwenden, die nach diesem Wettbewerb erstellt wurde, sofern sie nicht für die Beantwortung dieser Herausforderung entwickelt wurde." Normalerweise erlaube ich solchen Sprachen, bei meinen Herausforderungen wettbewerbsfähig zu sein;)
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ: Oh, großartig! Vielen Dank für den Hinweis :)
Zach Gates

2

Gelee , 8 Bytes

RDFṢ1œ|Ḍ

Probieren Sie es online!

Wie es funktioniert

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.

2

Oracle SQL 11.2, 222 211 Bytes

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);

Nicht golfen

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
       )

2

MATL , 17 Bytes

Verwendet die aktuelle Version (7.0.0) von Sprache / Compiler.

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

Inspiriert von FryTheEggmans Antwort .

BEARBEITEN (29. Juli 2016): Sie können es online mit einigen Änderungen versuchen , um sich an Änderungen in der Sprache anzupassen.

Beispiel

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

Erläuterung

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

1

05AB1E , 6 Bytes

Hinweis: Diese Einsendung verwendet Funktionen, die diese Herausforderung nachträglich erfüllen und daher nicht wettbewerbsfähig sind

Code:

Lß?J{?

Erläuterung:

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

Verwendet ISO 8859-1-Codierung


Wie funktioniert das?
Lirtosiast

@ ThomasKwa Erklärung hinzugefügt
Adnan

Whoa. Das ist fantastisch!
Conor O'Brien

1

Mathcad, 86 "Bytes"

Die Funktion s (n) verwendet eine for-Schleife, um die Champernowne-Ganzzahl aufzubauen, indem jede Zahl in ihre Zeichenfolgenform konvertiert und miteinander verkettet wird. Die Zeichenfolge wird dann in den entsprechenden Vektor von ASCII-Codes konvertiert und sortiert. Die Funktion tauscht dann alle führenden Nullen gegen die erste aus und wandelt den Vektor schließlich wieder in einen String um.

Um die Funktion zu überprüfen, habe ich die Testfälle in einen Vektor vn eingefügt und dann mit dem Vektoroperator s auf vn angewendet. Ich überprüfe dann die Ergebnisse anhand der angegebenen Testfallwerte.

Bildbeschreibung hier eingeben


Mathcad ist eine mathematische Anwendung, die auf 2D-Arbeitsblättern basiert, die aus "Bereichen" bestehen, von denen jeder Text, ein mathematischer Ausdruck, ein Programm, ein Plot oder eine Skriptkomponente sein kann.

Eine mathematische oder Programmieranweisung wird aus einer Palettensymbolleiste ausgewählt oder über eine Tastenkombination eingegeben. Für Golfzwecke wird eine Operation ("Byte") als die Anzahl der Tastaturoperationen angesehen, die zum Erstellen eines Namens oder Ausdrucks erforderlich sind (um beispielsweise die Variable a auf 3 zu setzen, schreiben wir a: = 3. Der Definitionsoperator : = ist ein einziger Tastendruck ":", ebenso wie a und 3, was insgesamt 3 "Bytes" ergibt. Die Programmierung für den Operator erfordert die Eingabe von ctl-shft- # (oder eines einzelnen Klicks auf die Programmiersymbolleiste), was wiederum gleichbedeutend mit ist 1 Byte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.