Nomor Rien

38

Konstanta Champernowne adalah angka yang dibangun dengan menggabungkan nangka pertama , dengan ncenderung tak terhingga. Itu terlihat seperti ini:

0.123456789101112131415161718192021222324252627282930...

Sekarang, saya akan menjelaskan kepada Anda nomor Rien . Ini dapat dianggap sebagai minimalisasi konstan Champernowne sebagai bilangan bulat. Saya akan merujuk ke nomor Rien dengan ndigit pertama sebagai Ri ( n ). Inilah cara merumuskannya:

  1. nBilangan asli pertama (urutan {1,2,3, ...}) digabungkan.
  2. Hasil ini kemudian disortir, sesuai dengan nilai digit. Jadi 1..12akan terlihat seperti 011111223456789.
  3. Karena angka Rien tidak dapat memiliki angka nol di depan, kami memindahkan semua angka 0sehingga menjadi signifikan, sambil menjaga angka tersebut diminimalkan, menghasilkan, katakanlah 101111223456789,. Ini adalah Ri ( n ), dalam hal ini, Ri (12).

Berikut ini beberapa hasil untuk Ri ( n ):

n     Ri ( n )
1 1
2 12
3 123
7 1234567
9 123456789
10 10123456789
15 101111111223344556789
34 10001111111111111222222222222223333333334444555666777888999
42 100001111111111111122222222222222233333333333333444444455556666777788889999
45 1000011111111111111222222222222222333333333333333444444444454555556666777788889999
55 10000011111111111111122222222222222223333333333333344444444444444445555555555556666677777778888899999
100 10:00
999100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Objective Diberikan angka 1 ≤ n<10000 sebagai input (melalui argumen, STDIN, atau hardcoding jika bahasa Anda tidak mendukung input konvensional), output / return Ri ( n).

Ini adalah , jadi kode terpendek dalam byte menang. Anda dapat menggunakan bahasa yang dibuat setelah kontes ini, selama itu tidak dibuat untuk menjawab tantangan ini. (Tentu saja, Anda dapat menggunakannya, jika memberikan solusi yang menarik, tetapi tandai jawaban Anda sebagai tidak bersaing.)

Implementasi referensi

Saya menguji ini di IE, jadi seharusnya tidak ada masalah. Jika ada adalah masalah, ada solusi mudah: mendapatkan browser waras.

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


Papan peringkat

Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.

Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:

## Language Name, N bytes

di mana Nukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:

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

Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:

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

Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:

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

Conor O'Brien
sumber
22
Saya selalu berpikir 0adalah nomor rien .
flawr
Tidak yakin jika saya melewatkan sesuatu, tapi kita bisa memindahkan salah satu dari 1di depan 0, ya?
FryAmTheEggman
@FryAmTheEggman Anda benar.
Conor O'Brien
@ MartinBüttner \ o / Anda menemukannya.
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tidak ada yang berbeda. Yang satu itu hanya mengizinkan permutasi dari seluruh angka, bukan dari angka masing-masing.
Martin Ender

Jawaban:

12

Pyth, 8

+1SjktSQ

Buat daftar [1, .. , input]lalu hapus yang terkemuka, gabung dan susun, lalu tambahkan 1.

Test Suite

FryAmTheEggman
sumber
13

Perl, 44 42 41 33 31 byte

Yaaay, posting pertama yang pernah ada!

Berkat primo untuk menyimpan 2 byte.

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

Seperti yang dilakukan orang lain, menghapus 1 dan menambahkannya secara manual berfungsi.

Cobalah online

Paul Picard
sumber
2
Selamat datang di PPCG, dan selamat atas posting pertama Anda (walaupun rasanya aneh menyambut saya, karena Anda bergabung sebelum saya melakukannya ...). Dua hal - saya menghitung 43 byte ... kedua, tautan "Coba online" Anda tampaknya mengarah ke revisi kode Anda yang lebih lama / berbeda. Salin-tempel kode Anda secara manual ke dalam karya Ideone, tetapi bukan tautan Anda.
AdmBorkBork
Terima kasih atas komentar Anda! Saya menggunakan TextWrangler untuk jumlah byte, kira saya pergi 1 terlalu jauh ... (ditambah ruang tidak diperlukan, sehingga mengurangi seluruh bytecount menjadi 42). Ideone harus diperbaiki sekarang.
Paul Picard
Oh, tidak tahu tentang itu. Juga berfungsi pada Perl saya di Mac saya (5.18) Terima kasih!
Paul Picard
2
Disimpan dua byte dengan menyingkirkan split / join:print 1,sort"@{[2..<>]}"=~/\d/g
primo
11

Japt, 14 12 byte

1+2o°U ¬¬n ¬

Cobalah online!

Bagaimana itu bekerja

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
Produksi ETH
sumber
4
o_o Anda bermain golf dalam tenggang waktu 5 menit? senjata tercepat di barat
Conor O'Brien
@CᴏɴᴏʀO'Bʀɪᴇɴ Saya kira Anda tidak ingin memposting golf kode baru setelah itu: D
Pierre Arlaud
9

Retina , 78 byte

Saatnya memamerkan beberapa fitur Retina baru (masih belum terlalu kompetitif, tetapi sebelum hari ini mungkin sudah mendekati 300 byte).

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

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

Cobalah online.

Penjelasan

Meskipun mungkin untuk mengkonversi antara desimal dan unary cukup nyaman sekarang, ini masih cukup lama karena saya harus mengkonversi bolak-balik beberapa kali karena beberapa operasi lebih dapat dilakukan dalam desimal daripada di unary dan sebaliknya.

.+
$0$*1

Mari kita mulai dengan mengubah input menjadi unary. Ini bekerja dengan mencocokkan input dan kemudian menggunakan $*1pengulangan mana 1yang berkali-kali (fitur pengulangan ini baru pada hari ini).

\B
 $`

Selanjutnya, kami menghasilkan rentang dari 1hingga Ndi unary. Saya telah menjelaskan mengapa ini bekerja dalam jawaban FizzBuzz saya .

(1)+
$#1

Kami mengonversi setiap angka dalam rentang kembali ke desimal sehingga kami dapat bekerja dengan angka desimal. Hal ini dilakukan dengan mencocokkan masing-masing angka unary sehingga masing-masing 1menghasilkan tangkapan terpisah. Kemudian kami menggantinya dengan jumlah tangkapan grup satu, menggunakan sintaks jumlah tangkapan baru $#1.

^1| 

Ini menghilangkan yang terdepan 1serta semua spasi dari string sehingga kita hanya memiliki digit (kecuali untuk satu 1).

.
 1$0$*1

Kami mengonversi kembali ke unary dan menambahkan 1ke setiap digit (untuk memastikan bahwa bahkan 0tidak kosong). Kami juga menyisipkan spasi di depan setiap digit untuk memastikan bahwa mereka dipisahkan.

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

Kami berulang kali mencocokkan sejumlah kecil yang diawali dengan jumlah yang lebih besar dan menukar mereka. Itu semacam gelembung di Retina. :)

 1(1)*
$#1

Aaa dan kembali ke desimal.

^
1

Akhirnya, kami menyisipkan satu 1di depan untuk memperhitungkan yang sudah kami hapus sebelumnya.

Martin Ender
sumber
1
Apa fitur baru yang kamu bicarakan?
Conor O'Brien
1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Saya akan menambahkan penjelasan nanti. Yang ini menggunakan sintaksis substitusi baru untuk menghitung tangkapan dan karakter berulang yang dapat digunakan untuk konversi desimal / unary yang cukup pendek. Inilah changelog lengkapnya: github.com/mbuettner/retina/blob/master/CHANGELOG.md
Martin Ender
@ MartinBüttner bagus. Apakah ini berarti Retina tidak dapat lagi mengklaim pembebasan ini ?
Trauma Digital
@DigitalTrauma Saya pikir itu masih bentuk input yang paling alami. Juga saya tidak pernah mengerti bagaimana bahasa seperti itu pernah mendapat begitu banyak dukungan di situs ini.
Martin Ender
6

Haskell, 44 byte

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

Sayangnya sortdalam Data.List, yang 17 byte!

nimi
sumber
6

JavaScript (ES6), 65 62 54 52 byte

Disimpan 3 byte berkat edc65

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

Buat string dari semua angka dari 2 hingga x, lalu pisahkan, urutkan, bergabung, dan tambahkan 1 ke awal. Ini mungkin masih bisa golf; saran diterima!

Produksi ETH
sumber
Saya tidak punya ES6, tetapi tidak bisakah Anda menggunakan (baru) saja Array(x-1).map((_,y)=>y+2)?
Conor O'Brien
@CᴏɴᴏʀO'Bʀɪᴇɴ peta lewati elemen array kosong, jadi Anda harus menggunakan Array(n).fill().map(...(lihat kiat ES6)
edc65
Terlambat untuk memposting milik saya, tetapi sebuah petunjuk untuk Anda: n=>1+[...[...Array(n-1)].map(_=>++n,n=1).join``].sort().join`` (1 byte lebih pendek, ini adalah pemecahannya)
edc65
@ edc65 dan Cᴏɴᴏʀ O'Bʀɪᴇɴ Terima kasih atas tipsnya! Saya bertanya-tanya mengapa menggunakan .split()terasa sangat aneh ...
ETHproduk
@ edc65 Huh, apakah solusi saya sama panjang dengan milik Anda:n=>1+[...[...Array(n+1).keys()].slice(2).join``].sort().join``
Neil
5

Mathematica, 52 byte

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

Sekali lagi, pemrosesan string terjadi ...

LegionMammal978
sumber
Saya pikir IntegerDigitsutas di atas daftar sehingga Anda tidak perlu memetakannya.
Martin Ender
Oh benar, diutamakan.
Martin Ender
4

APL (17)

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

Penjelasan:

'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

Uji:

      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      1
1
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      10
10123456789
      '1',∆[⍋∆←1↓∊⍕¨⍳⎕]
⎕:
      55
10000011111111111111122222222222222223333333333333333444444444444444455555555555566666777778888899999
marinus
sumber
Bagus! Jauh lebih baik dari milikku. : DI tidak menyadari itu akan meratakan array dan memberi Anda sebuah string. Senang mendengarnya.
Alex A.
3

Python 2, 60 byte

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

ClojureScript, 48 byte

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

Sama seperti yang lainnya, cukup banyak. REPL tersedia di sini .

MattPutnam
sumber
3

Ruby, 48 byte

Fungsi anonim. Pada dasarnya hanya Ruby menemukan beberapa jawaban lain di sini ..

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

Brachylog , 76 41 byte

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

Mengambil nomor sebagai input.

Solusi ini berfungsi dengan beberapa perubahan yang saya buat pada predikat Findall bawaan f . OP tampaknya baik-baik saja dengan menggunakan bahasa yang lebih tua dari jawaban jadi saya pikir ini baik-baik saja (perubahan yang saya buat sudah lama, saya hanya memotivasi diri saya untuk melakukannya karena tantangan ini).

Penjelasan

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
Fatalisasi
sumber
3

Smalltalk, 76 byte

Seperti biasa di Smalltalk, secara konseptual sangat singkat, tetapi secara tekstual sangat bertele-tele ...

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

Tambahkan ini sebagai metode kelas untuk Stringdan memanggil seperti ini, misalnya untuk 20,String f: 20


sumber
3

Utilitas Bash + GNU, 58

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

Cobalah online.

Trauma Digital
sumber
1
Saya memiliki pendekatan yang sama, tetapi penanganan yang berbeda pada bagian "1 di awal" (52 byte). Dengan milik Anda, Anda dapat mencukur: sort (panjang 1 digit, tidak perlu -n).
Olivier Dulac
3

Bash, 35 34 byte

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

Ini didasarkan pada jawaban @DigitalTrauma dan @OlivierDulac . Cobalah online dengan Ideone .

Bagaimana itu bekerja

  • seq 2 $1mencetak semua bilangan bulat dari 2 ke yang ditentukan pada baris perintah.

  • fold -1 membungkus semua garis dengan lebar 1, yaitu, menempatkan setiap karakter pada barisnya sendiri.

    -1 tampaknya merupakan fitur tidak berdokumen.

  • sort mengurutkan karakter berdasarkan nilai numeriknya.

  • printf %d 1`...`​menambahkan huruf 1 ke baris pertama dan mencetak setiap baris sebagai integer ( %d), tanpa pemisahan.

    Ini mengambil keuntungan dari implementasi printf Bash yang penasaran, yang mengulangi string format berulang-ulang, sampai semua argumen dikonsumsi.

Dennis
sumber
+1, saya suka yang lebih baik dari kami :)
Olivier Dulac
3

JavaScript ES6, 49 46 Bytes

Berkat edc65 untuk 2 byte

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

;console.log(F(15))

l4m2
sumber
1
Saya mendapat sesuatu yang serupa tetapi 1 byte lebih pendek. Coba gunakan fungsi rekursif tanpa argumen, hanya mengurangi parameter asli x
edc65
2

Julia, 33 byte

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

Ini adalah fungsi lambda yang menerima integer dan mengembalikan string. Untuk menyebutnya, tetapkan ke variabel.

Kami membangun rentang 2:n, yang akan kosong untuk n<2, menggabungkannya menjadi string, memercikkan string ke dalam array karakter, mengurutkannya, menggabungkannya ke dalam string, dan mengawali 1.

Alex A.
sumber
2

APL, 21 byte

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

Ini adalah fungsi monadik tanpa nama yang menerima integer di sebelah kanan dan mengembalikan sebuah string. Untuk menyebutnya, tetapkan ke variabel.

Penjelasan:

            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)

Cobalah online

Alex A.
sumber
2

Python 2, 60 byte

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

Pengindeksan untuk kemenangan. :-)


Python 2, 60 byte

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

Hanya sebuah alternatif.

Zach Gates
sumber
2

Bima Sakti 1.6.4 , 22 byte (tidak bersaing)

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

Saya harus menambahkan opcode penyortiran untuk tantangan ini.


Penjelasan

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

Serius, 10 byte

,u2xεjS'1+

Hex Dump:

2c753278ee6a5327312b

Cobalah secara Online

Penjelasan:

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

Alat Bash dan GNU, 58 52 byte

echo 1$(seq 2 $1|sed -e 's/./&\n/g'|sort|tr -d \\n)
Olivier Dulac
sumber
pendekatan yang sama dari @ Digital-trauma, tetapi cara yang berbeda untuk menambahkan 1, dan tidak perlu -n karena angka panjangnya 1 digit. (Saya melihat jawabannya setelah saya melakukan percobaan pertama saya)
Olivier Dulac
2

PowerShell, 61 59 byte

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

Mengambil input param($a)dan kemudian menggunakannya untuk mengindeks ke dalam array dengan [$a-eq1]. Jika benar, kami mengindeks elemen dan output kedua 1. Kalau tidak, kita menggabungkan "1"dengan joined array yang dibuat oleh 1) mendefinisikan rentang baru 2..$ayang telah joindisatukan bersama, 2) casting itu sebagai char-array, dan 3) mengirimkannya melalui Sort-Objectcmdlet, yang semuanya kemudian output.

Sunting1 - Disimpan 2 byte dengan menggerakkan -joinoperator dalam .

AdmBorkBork
sumber
2

Gogh , 9 7 byte

GJT1-1P

Anda dapat menjalankan ini menggunakan:

$ ./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
sumber
"Anda dapat menggunakan bahasa yang dibuat setelah kontes ini, selama itu tidak dibuat untuk menjawab tantangan ini." Saya membiarkan bahasa-bahasa seperti itu menjadi kompetitif dalam tantangan saya, biasanya;)
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ: Oh, keren! Terima kasih telah menunjukkannya :)
Zach Gates
2

Jelly , 8 byte

RDFṢ1œ|Ḍ

Cobalah online!

Bagaimana itu bekerja

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
sumber
2

Oracle SQL 11.2, 222 211 byte

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

Tidak bermain golf

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
sumber
2

MATL , 17 byte

Menggunakan versi saat ini (7.0.0) bahasa / kompiler.

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

Terinspirasi oleh jawaban FryTheEgggman .

EDIT (29 Juli 2016): Anda dapat mencobanya secara online dengan beberapa modifikasi agar sesuai dengan perubahan dalam bahasa.

Contoh

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

Penjelasan

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
sumber
1

05AB1E , 6 byte

Catatan: Kiriman ini menggunakan fitur yang menunda tantangan ini dan karena itu tidak kompetitif

Kode:

Lß?J{?

Penjelasan:

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

Menggunakan penyandian ISO 8859-1

Adnan
sumber
Bagaimana cara kerjanya?
lirtosiast
@ThomasKwa Explanation menambahkan
Adnan
Wah Ini fantastis!
Conor O'Brien
1

Mathcad, 86 "byte"

Fungsi s (n) menggunakan loop for untuk membangun "integer" Champernowne dengan mengonversi setiap angka ke bentuk stringnya dan menggabungkannya menjadi satu. String kemudian dikonversi ke vektor yang setara dengan kode ASCII dan diurutkan. Fungsi ini kemudian menukar sembarang nol terkemuka dengan yang pertama, akhirnya mengubah vektor kembali menjadi string.

Untuk memeriksa fungsinya, saya menempatkan test case ke dalam vektor vn, lalu menerapkan s ke vn menggunakan operator vectorize. Saya kemudian memeriksa hasilnya terhadap nilai test case yang diberikan.

enter image description here


Mathcad adalah aplikasi matematika berdasarkan lembar kerja 2D yang terdiri dari "wilayah" yang masing-masing dapat berupa teks, ekspresi matematika, program, plot, atau komponen skrip.

Instruksi matematika atau pemrograman dipilih dari bilah alat palet atau dimasukkan menggunakan pintasan keyboard. Untuk tujuan bermain golf, operasi ("byte") diambil sebagai jumlah operasi keyboard yang diperlukan untuk membuat nama atau ekspresi (misalnya, untuk mengatur variabel a menjadi 3, kita akan menulis: = 3. Operator definisi : = adalah penekanan tombol tunggal ":", seperti a dan 3 yang memberikan total 3 "byte". Pemrograman untuk operator memerlukan mengetik ctl-shft- # (atau satu klik pada bilah alat pemrograman) sehingga sekali lagi setara dengan 1 byte.

Stuart Bruff
sumber