Số Rien


38

Hằng số Champernowne là một số được xây dựng bằng cách ghép các nsố đầu tiên , có nxu hướng vô cùng. Nó trông giống như thế này:

0.123456789101112131415161718192021222324252627282930...

Bây giờ, tôi sẽ mô tả cho bạn số Rien . Nó có thể được coi là tối thiểu hóa hằng số Champernowne như một số nguyên. Tôi sẽ đề cập đến số Rien với các nchữ số đầu tiên là Ri ( n ). Đây là cách xây dựng nó:

  1. Các nsố tự nhiên đầu tiên (dãy {1,2,3, ...}) được nối với nhau.
  2. Kết quả này sau đó được sắp xếp, theo giá trị chữ số. Vì vậy, 1..12sẽ trông như thế nào 011111223456789.
  3. Vì số Rien không thể có các số 0 đứng đầu, chúng tôi di chuyển tất cả 0các số sao cho chúng có ý nghĩa, trong khi giữ cho số lượng được giảm thiểu, dẫn đến, giả sử , 101111223456789. Đây là Ri ( n ), trong trường hợp này, Ri (12).

Dưới đây là một số kết quả cho Ri ( n ):

n     Ri ( n )
1 1
2 12
3 123
7 1234567
9 123456789
10 10123456789
15 10111111223344556789
34 1000111111111111212222222222222333333333334444555666777888999999
42 1000011111111111111222222222222222333333333333333344444445555666677778888999999
45 1000011111111111111222222222222222333333333333333444444444444455555666677778888999999
55 10000011111111111111212222222222222223333333333333333333344444444444444445555555555555566666777778888899999999999
100 10000000000011111111111111111111222222222222222222222223333333333333333
999100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Mục tiêu Cho số 1 ≤ n<10000 làm đầu vào (thông qua đối số, STDIN hoặc mã hóa cứng nếu ngôn ngữ của bạn không hỗ trợ đầu vào thông thường), đầu ra / trả về Ri ( n).

Đây là một , vì vậy mã ngắn nhất tính bằng byte sẽ thắng. Bạn có thể sử dụng một ngôn ngữ được tạo ra sau cuộc thi này, miễn là nó không được tạo ra để trả lời thử thách này. (Tất nhiên, bạn có thể sử dụng nó, nếu nó cung cấp một giải pháp thú vị, nhưng đánh dấu câu trả lời của bạn là không cạnh tranh.)

Thực hiện tham khảo

Tôi đã thử nghiệm điều này trong IE, vì vậy thực sự không có vấn đề gì. Nếu có một vấn đề, có một giải pháp dễ dàng: có được một trình duyệt lành mạnh.

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


Bảng xếp hạng

Đoạn trích Stack ở cuối bài đăng này tạo ra danh mục từ các câu trả lời a) dưới dạng danh sách các giải pháp ngắn nhất cho mỗi ngôn ngữ và b) dưới dạng bảng xếp hạng tổng thể.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

## Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

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

Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích:

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


22
Tôi luôn nghĩ 0là số rien .
flawr

Không chắc chắn nếu tôi thiếu một cái gì đó, nhưng chúng ta có thể di chuyển một trong những 1s phía trước 0s, yeah?
FryAmTheEggman

@FryAmTheEggman Bạn đúng.
Conor O'Brien

@ MartinBüttner \ o / bạn đã tìm thấy nó.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Không, một người khác. Điều đó chỉ cho phép hoán vị của toàn bộ số, không cho các chữ số riêng lẻ của chúng.
Martin Ender

Câu trả lời:



13

Perl, 44 42 41 33 31 byte

Yaaay, bài đầu tiên bao giờ hết!

Nhờ primo cho 2 byte lưu.

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

Như những người khác đã làm, loại bỏ 1 và chuẩn bị nó bằng tay thực hiện công việc.

Dùng thử trực tuyến


2
Chào mừng bạn đến với PPCG và chúc mừng bài đăng đầu tiên của bạn (mặc dù có vẻ lạ khi tôi chào đón bạn, vì bạn đã tham gia trước khi tôi làm ...). Hai điều - tôi đếm 43 byte ... thứ hai, liên kết "Dùng thử trực tuyến" của bạn trông để chỉ ra một bản sửa đổi cũ hơn / khác nhau của mã của bạn. Sao chép thủ công dán mã của bạn vào Ideone hoạt động, nhưng không phải liên kết của bạn.
admBorkBork

Cảm ơn bạn đã bình luận! Tôi đã sử dụng TextWrangler cho số byte, đoán rằng tôi đã đi quá 1 ... (cộng với một khoảng trống là không cần thiết, do đó làm giảm toàn bộ bytecount xuống còn 42). Ideone nên được sửa chữa ngay bây giờ.
Paul Picard

Ồ, không biết về điều đó. Cũng hoạt động trên Perl của tôi trên máy Mac (5.18) Cảm ơn!
Paul Picard


2
Đã lưu hai byte bằng cách loại bỏ phân tách / tham gia:print 1,sort"@{[2..<>]}"=~/\d/g
primo

11

Japt, 14 12 byte

1+2o°U ¬¬n ¬

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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 bạn đã chơi nó trong thời gian ân hạn 5 phút? súng nhanh nhất ở phía tây
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Tôi đoán bạn không muốn đăng các mã golf mới sau đó: D
Pierre Arlaud

9

Võng mạc , 78 byte

Đã đến lúc thể hiện một số tính năng Retina mới (nó vẫn không cạnh tranh lắm, nhưng trước ngày hôm nay, điều này có lẽ đã gần hơn với 300 byte).

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

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

Hãy thử trực tuyến.

Giải trình

Mặc dù hiện tại có thể chuyển đổi giữa số thập phân và đơn nguyên khá thuận tiện, nhưng điều này vẫn còn khá dài vì tôi phải chuyển đổi qua lại nhiều lần vì một số thao tác có thể thực hiện được bằng số thập phân hơn là đơn phương và ngược lại.

.+
$0$*1

Hãy bắt đầu bằng cách chuyển đổi đầu vào thành unary. Điều này hoạt động bằng cách khớp với đầu vào và sau đó sử dụng $*1lặp lại 1nhiều lần (tính năng lặp lại này là mới cho đến ngày hôm nay).

\B
 $`

Tiếp theo, chúng tôi tạo ra một phạm vi từ 1đến Nđơn nguyên. Tôi đã giải thích lý do tại sao điều này hoạt động trong câu trả lời FizzBuzz của tôi .

(1)+
$#1

Chúng tôi chuyển đổi từng số trong phạm vi trở lại thập phân để chúng tôi có thể làm việc với các chữ số thập phân. Điều này được thực hiện bằng cách khớp từng số đơn vị sao cho mỗi số 1tạo ra một bản chụp riêng. Sau đó, chúng tôi thay thế bằng số lần chụp của nhóm một, sử dụng cú pháp đếm số lần chụp mới $#1.

^1| 

Điều này sẽ loại bỏ hàng đầu 1cũng như tất cả các khoảng trắng khỏi chuỗi để chúng ta chỉ còn lại các chữ số (ngoại trừ một chữ số 1).

.
 1$0$*1

Chúng tôi chuyển đổi trở lại unary và thêm 1vào từng chữ số (để đảm bảo rằng thậm chí 0là không trống). Chúng tôi cũng chèn một khoảng trắng ở phía trước mỗi chữ số để đảm bảo rằng chúng được phân tách.

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

Chúng tôi liên tục ghép một số nhỏ trước một số lớn hơn và hoán đổi chúng. Đó là loại bong bóng ở Retina. :)

 1(1)*
$#1

Aaaand trở lại thập phân.

^
1

Cuối cùng, chúng tôi chèn một cái 1ở phía trước để tính đến cái mà chúng tôi đã xóa trước đó.


1
Bạn nói về những tính năng mới nào?
Conor O'Brien

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Tôi sẽ thêm một lời giải thích sau. Cái này sử dụng cú pháp thay thế mới để đếm số lần chụp và lặp lại các ký tự có thể được sử dụng để chuyển đổi số thập phân / đơn nguyên hợp lý ngắn. Dưới đây là toàn bộ thay đổi: github.com/mbuettner/retina/blob/master/CHANGELOG.md
Martin Ender

@ MartinBüttner tốt đẹp. Điều này có nghĩa là Retina không còn có thể yêu cầu miễn thuế này nữa?
Chấn thương kỹ thuật số

@DigitalTrauma Tôi nghĩ rằng đây vẫn là hình thức nhập liệu tự nhiên nhất. Ngoài ra tôi không bao giờ hiểu làm thế nào loại ngôn ngữ đó đã nhận được rất nhiều sự hỗ trợ trên trang web này.
Martin Ender

6

Haskell, 44 byte

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

Thật không may sortlà trong Data.Listđó, 17 byte!


6

JavaScript (ES6), 65 62 54 52 byte

Đã lưu 3 byte nhờ edc65

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

Xây dựng một chuỗi gồm tất cả các số từ 2 đến x, sau đó chia nhỏ, sắp xếp, tham gia và thêm 1 vào đầu. Điều này vẫn có thể chơi được; đề nghị chào mừng!


Tôi không có ES6 trong tay, nhưng bạn không thể sử dụng (mới) Array(x-1).map((_,y)=>y+2)?
Conor O'Brien

Bản đồ @ CᴏɴᴏʀO'Bʀɪᴇɴ bỏ qua các phần tử mảng trống, vì vậy bạn nên sử dụng Array(n).fill().map(...(xem mẹo ES6)
edc65

Quá muộn để đăng bài của tôi, nhưng một gợi ý cho bạn: n=>1+[...[...Array(n-1)].map(_=>++n,n=1).join``].sort().join`` (ngắn hơn 1 byte, đó là sự phân tách)
edc65

@ edc65 và Cᴏɴᴏʀ O'Bʀɪᴇɴ Cảm ơn vì lời khuyên! Tôi tự hỏi tại sao sử dụng lại .split()cảm thấy kỳ lạ ...
ETHproductions

@ edc65 Huh, là giải pháp của tôi có cùng độ dài với bạn:n=>1+[...[...Array(n+1).keys()].slice(2).join``].sort().join``
Neil


5

Toán học, 52 byte

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

Một lần nữa, xử lý chuỗi đã xảy ra ...


Tôi nghĩ rằng IntegerDigitschủ đề trên danh sách để bạn không cần bản đồ nó.
Martin Ender

Oh đúng, ưu tiên.
Martin Ender

4

APL (17)

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

Giải trình:

'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

Kiểm tra:

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

Tốt đẹp! Tốt hơn nhiều so với của tôi. : DI không nhận ra rằng sẽ làm phẳng mảng và cung cấp cho bạn một chuỗi. Đó là điều tốt để biết.
Alex A.


3

ClojureScript, 48 byte

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

Giống như tất cả những người khác, khá nhiều. REPL có sẵn ở đây .


3

Ruby, 48 byte

Một chức năng ẩn danh. Về cơ bản chỉ là Rubyfied một số câu trả lời khác ở đây ..

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

3

Brachylog , 76 41 byte

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

Lấy một số làm đầu vào.

Giải pháp này hoạt động với một vài thay đổi tôi đã thực hiện đối với vị từ Findall tích hợp f. OP rõ ràng là ổn với việc sử dụng các ngôn ngữ cũ hơn câu trả lời vì vậy tôi nghĩ rằng điều này là tốt (những thay đổi tôi đã thực hiện từ lâu, tôi chỉ thúc đẩy bản thân làm điều đó vì thử thách này).

Giải trình

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 byte

Như thường lệ trong Smalltalk, về mặt khái niệm rất ngắn gọn, nhưng về mặt văn bản rất dài dòng ...

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

Thêm phương thức này làm phương thức lớp cho Stringvà gọi như thế này, ví dụ như cho 20,String f: 20



3

Bash, 35 34 byte

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

Điều này dựa trên các câu trả lời của @DigitalTrauma@OlivierDulac . Hãy thử trực tuyến với Ideone .

Làm thế nào nó hoạt động

  • seq 2 $1in tất cả các số nguyên từ 2 đến một số được chỉ định trên dòng lệnh.

  • fold -1 kết thúc tất cả các dòng có chiều rộng 1, nghĩa là đặt mỗi ký tự trên một dòng riêng.

    -1 dường như là một tính năng không có giấy tờ.

  • sort sắp xếp các ký tự theo giá trị số của chúng.

  • printf %d 1`...`​ chuẩn bị một 1 cho dòng đầu tiên và in mỗi dòng dưới dạng một số nguyên ( %d), không có phân tách.

    Điều này lợi dụng việc triển khai printf tò mò của Bash, lặp đi lặp lại chuỗi định dạng, cho đến khi tất cả các đối số được tiêu thụ.


+1, tôi thích cái đó tốt hơn chúng ta :)
Olivier Dulac

3

JavaScript ES6, 49 46 byte

Cảm ơn edc65 cho 2 byte

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

;console.log(F(15))


1
Tôi đã nhận được một cái gì đó tương tự nhưng ngắn hơn 1 byte. Hãy thử sử dụng hàm đệ quy không có đối số, chỉ cần giảm tham số ban đầu x
edc65

2

Julia, 33 byte

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

Đây là hàm lambda chấp nhận một số nguyên và trả về một chuỗi. Để gọi nó, gán nó cho một biến.

Chúng tôi xây dựng phạm vi 2:n, sẽ trống cho n<2, nối nó thành một chuỗi, tách chuỗi thành một mảng các ký tự, sắp xếp chúng, nối nó thành một chuỗi và thêm 1.


2

APL, 21 byte

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

Đây là một hàm đơn nguyên không tên, chấp nhận một số nguyên ở bên phải và trả về một chuỗi. Để gọi nó, gán nó cho một biến.

Giải trình:

            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)

Dùng thử trực tuyến


2

Python 2, 60 byte

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

Lập chỉ mục cho chiến thắng. :-)


Python 2, 60 byte

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

Chỉ là một sự thay thế.


2

Dải ngân hà 1.6.4 , 22 byte (không cạnh tranh)

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

Tôi đã phải thêm một opcode sắp xếp cho thử thách này.


Giải trình

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

Nghiêm túc, 10 byte

,u2xεjS'1+

Bãi rác Hex:

2c753278ee6a5327312b

Dùng thử trực tuyến

Giải trình:

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

2

Công cụ Bash và GNU, 58 52 byte

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

cách tiếp cận tương tự như @ Digital-chấn thương, nhưng cách khác để thêm 1 và không cần -n vì các số dài 1 chữ số. (Tôi đã thấy câu trả lời của anh ấy sau khi tôi thực hiện lần thử đầu tiên)
Olivier Dulac

2

PowerShell, 61 59 byte

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

Đưa đầu vào param($a)và sau đó sử dụng nó để lập chỉ mục thành một mảng với [$a-eq1]. Nếu đúng, chúng tôi lập chỉ mục phần tử thứ hai và đầu ra 1. Mặt khác, chúng ta ghép nối "1"với joinmảng ed được tạo bởi 1) xác định một phạm vi mới 2..$ađã tự joined với nhau, 2) truyền nó thành một mảng char và 3) gửi nó qua Sort-Objectlệnh ghép ngắn, tất cả sau đó sẽ xuất ra.

Edit1 - Đã lưu 2 byte bằng cách di chuyển -jointoán tử bên trong .


2

Gogh , 9 7 byte

GJT1-1P

Bạn có thể chạy nó bằng cách sử dụng:

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

"Bạn có thể sử dụng một ngôn ngữ được tạo ra sau cuộc thi này, miễn là nó không được tạo ra để trả lời thử thách này." Thông thường, tôi cho phép các ngôn ngữ như vậy có thể cạnh tranh trong các thử thách của mình;)
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ: Ồ, tuyệt vời! Cảm ơn bạn đã chỉ ra điều đó :)
Zach Gates

2

Thạch , 8 byte

RDFṢ1œ|Ḍ

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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

Không chơi gôn

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 byte

Sử dụng phiên bản hiện tại (7.0.0) của ngôn ngữ / trình biên dịch.

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

Lấy cảm hứng từ câu trả lời của FryTheEgggman .

EDIT (29 tháng 7 năm 2016): Bạn có thể dùng thử trực tuyến với một số sửa đổi để phù hợp với những thay đổi trong ngôn ngữ.

Thí dụ

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

Giải trình

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 byte

Lưu ý: Nội dung này sử dụng các tính năng hoãn lại thử thách này và do đó không cạnh tranh

Mã số:

Lß?J{?

Giải trình:

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

Sử dụng mã hóa ISO 8859-1


Cái này hoạt động ra sao?
lirtosiast

@ThomasKwa Giải thích thêm
Adnan

Whoa Cái này thật tuyệt!
Conor O'Brien

1

Mathcad, 86 "byte"

Hàm s (n) sử dụng vòng lặp for để xây dựng "số nguyên" Champernowne bằng cách chuyển đổi từng số thành dạng chuỗi của nó và nối chúng lại với nhau. Chuỗi sau đó được chuyển đổi thành vectơ mã ASCII tương đương và được sắp xếp. Hàm sau đó hoán đổi bất kỳ số 0 đứng đầu nào với số 0 đầu tiên, cuối cùng chuyển đổi vectơ trở lại thành một chuỗi.

Để kiểm tra hàm, tôi đặt các trường hợp thử nghiệm vào một vn vector, sau đó áp dụng s cho vn bằng toán tử vectorize. Sau đó tôi kiểm tra kết quả so với các giá trị trường hợp thử nghiệm đã cho.

nhập mô tả hình ảnh ở đây


Mathcad là ứng dụng toán học dựa trên các bảng tính 2D bao gồm các "vùng" mà mỗi vùng có thể là văn bản, biểu thức toán học, chương trình, cốt truyện hoặc thành phần kịch bản.

Một hướng dẫn toán học hoặc lập trình được chọn từ thanh công cụ bảng màu hoặc được nhập bằng phím tắt. Đối với mục đích chơi gôn, một thao tác ("byte") được coi là số thao tác bàn phím cần thiết để tạo tên hoặc biểu thức (ví dụ: để đặt biến a thành 3, chúng tôi sẽ viết a: = 3. Toán tử định nghĩa : = là một lần nhấn phím ":", cũng như a và 3 cho tổng cộng 3 "byte". Lập trình cho toán tử yêu cầu gõ ctl-shft- # (hoặc một lần bấm trên thanh công cụ lập trình) để một lần nữa tương đương với 1 byte.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.