Rien Numarası


38

Champernowne sabiti, ilk nsayıları nsonsuzluğa meyilli olarak birleştirerek oluşturulan bir sayıdır . Bu gibi bir şey görünüyor:

0.123456789101112131415161718192021222324252627282930...

Şimdi size Rien sayısını anlatacağım . Champernowne sabitinin bir tamsayı olarak en aza indirilmesi olarak düşünülebilir. İlk rakamları Ri ( n ) olarak gösteren Rien numarasına değineceğim . Bu nasıl formüle edilir:n

  1. İlk ndoğal sayılar ({1,2,3, ...} dizisi) bir araya getirildi.
  2. Bu sonuç, rakam değerine göre sıralanır. Öyle 1..12görünürdü 011111223456789.
  3. Yana Rien numarası lider sıfır olamaz, biz hiç hareket 0, bunlar diyelim ki, neden minimize numarayı şekilde korurken anlamlı olacak şekilde s 101111223456789. Bu, Ri ( n ), bu durumda, Ri (12).

Ri ( n ) için bazı sonuçlar :

n     Ri ( n )
1 1
2 12
3 123
7 1234567
9 123456789
10 10123456789
15 101111111223344556789
34 1000111111111111122222222222222223333333334444555666777888999
42 10000111111111111112222222222222222233333333333333444444455556666777788889999
45 10000111111111111112222222222222222233333333333333344444444444555556666777788889999
55 10000011111111111111122222222222222222222333333333333444444444444444455555555555566666777778888899999
100 100000000000111111111111111111112222222222222222222233333333333333333333444444444444444444445555555555555555555566666666666666666666777777777777777777778888888888888888888899999999999999999999
999100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999

Amaçn Girdi olarak 1 ≤ <10000 sayısı veriliyorsa (eğer diliniz geleneksel girişi desteklemiyorsa argümanlar, STDIN veya kodlama yoluyla), Ri / / çıkış Ri ( n).

Bu bir , yani bayttaki en kısa kod kazanır. Bu yarışmaya cevap vermek için yapılmadığı sürece, bu yarışmadan sonra yapılmış bir dili kullanabilirsiniz. (Tabii ki, olabilir ilginç bir çözüm sağlar eğer, onu kullanın, ancak rekabetsiz olarak cevabınızı işaretleyin.)

Referans uygulaması

Bunu IE'de test ettim, bu yüzden gerçekten bir sorun olmamalı. Orada ise olan bir sorun, kolay bir çözüm var: aklı başında bir tarayıcı olsun.

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


Liderler Sıralaması

Bu yazının altındaki Yığın Parçacığı, cevapları a) dil başına en kısa çözümün bir listesi olarak ve b) genel bir lider tablosu olarak oluşturur.

Cevabınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak cevabınızı bir başlık ile başlatın:

## Language Name, N bytes

Gönderinizin Nbüyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

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

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğundan veya tercüman bayrağı cezalarını ayrı ayrı listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

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

Dil adını, daha sonra pasajda görünecek bir bağlantı da yapabilirsiniz:

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


22
Hep düşündüm 0olduğunu rien sayı.
kusur,

Bir şeyi kaçırdığımdan emin değilim, ama s'lerden birinin 1önüne geçebiliriz 0, tamam mı?
FryAmTheEggman

@FryAmTheEggman Haklısın.
Conor O'Brien,

@ MartinBüttner / onu buldunuz.
Conor O'Brien,

@ CᴏɴᴏʀO'Bʀɪᴇɴ Biri farklıydı. Bu, yalnızca kendi rakamlarının değil, tüm sayıların izin verilmesine izin verdi.
Martin Ender

Yanıtlar:


12

Pyth, 8

+1SjktSQ

Bir liste yapar, [1, .. , input]sonra lider olanı kaldırır, katılır ve sıralar, sonra bir 1 hazırlar.

Test odası


13

Perl, 44 42 41 33 31 bayt

Yaaay, ilk gönderim!

2 bayt tasarruf için primo sayesinde.

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

Diğerlerinin yaptığı gibi 1'i çıkarmak ve elle hazırlamak işi yapar.

Çevrimiçi deneyin


2
PPCG'ye hoş geldiniz ve ilk yazınız için tebrikler (benden önce katıldığınızdan beri sizi karşılamam çok garip gelse de ...). İki şey - 43 bayt sayıyorum ... ikincisi, "Çevrimiçi deneyin" bağlantınız kodunuzun daha eski / farklı bir revizyonunu işaret ediyor. Kodunuzu Ideone'a manuel olarak yapıştırmak çalışır, ancak bağlantınızı değil.
AdmBorkBork,

Yorumlarınız için teşekkür ederiz! Bayt sayısı için TextWrangler kullandım, sanırım 1'e kadar ileri gittim ... (ayrıca bir alana ihtiyaç duyulmadı, böylece tüm bayt sayısını 42'ye indirdi). İdeone şimdi düzeltilmelidir.
Paul Picard

Oh, bunu bilmiyordum. Ayrıca benim Mac Perl üzerinde çalışır (5.18) Teşekkürler!
Paul Picard,


2
Bölme / katılma print 1,sort"@{[2..<>]}"=~/\d/g
işleminden

11

Japt, 14 12 bayt

1+2o°U ¬¬n ¬

Çevrimiçi deneyin!

Nasıl çalışır

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_ 5 dakikalık zarafet döneminde golf oynadın mı? en hızlı silah-in-the-batı
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Bundan sonra yeni kod golf göndermek istemediğinizi tahmin ediyorum: D
Pierre Arlaud

9

Retina , 78 bayt

Bazı yeni Retina özelliklerini gösterme zamanı (hala çok rekabetçi değil, ancak bugünden önce bu muhtemelen 300 bayta yakın olacaktı).

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

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

Çevrimiçi deneyin.

açıklama

Ondalık ve unary arasında şimdi oldukça rahat bir şekilde dönüşüm yapmak mümkün olsa da, bu hala oldukça uzun, çünkü birkaç işlem ileri ve geri çevirmek zorunda kalıyorum, çünkü bazı işlemler ondalık ve tersi durumlardan ziyade ondalık sayılarda daha uygulanabilir.

.+
$0$*1

Girişi unary'e çevirerek başlayalım. Bu girdiyi eşleştirerek ve ardından birçok kez $*1tekrar edenleri kullanarak çalışır 1(bu tekrarlama özelliği bugün itibariyle yenidir).

\B
 $`

Daha 1sonra N, unary den bir aralık oluşturur . Bunun neden FizzBuzz cevabımda işe yaradığını açıkladım .

(1)+
$#1

Aralıktaki her sayıyı ondalık basamağa dönüştürürüz, böylece ondalık basamakla çalışabiliriz. Bu, her birinin 1ayrı bir yakalama üreteceği şekilde her bir sayıyı eşleştirerek yapılır . Sonra bunu, yeni yakalama sayısı sözdizimini kullanarak, birinci yakalama sayısı ile değiştiririz $#1.

^1| 

Bu 1, dizginin yanı sıra dizgideki tüm boşlukları da kaldırır, böylece yalnızca rakamlarla kalırız (bir tanesi hariç 1).

.
 1$0$*1

Unary'e geri dönüp 1her bir basamağa ekliyoruz ( 0boş olmamasını sağlamak için ). Ayrıca, ayrılmalarını sağlamak için her basamağın önüne bir boşluk ekleriz.

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

Önceden daha büyük bir sayıdan önce gelen küçük sayıları eşleştirip değiştiririz. Bu Retina'da bir baloncuk türü. :)

 1(1)*
$#1

Aaa ve ondalık basamağa geri dön.

^
1

Son olarak, 1daha önce kaldırdıklarımızı hesaba katmak için bir tane daha yerleştirdik.


1
Hangi yeni özelliklerden bahsediyorsunuz?
Conor O'Brien,

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Daha sonra bir açıklama ekleyeceğim. Bu, yakalamaları saymak ve oldukça kısa ondalık / unary dönüşüm için kullanılabilecek karakterleri tekrarlamak için yeni ikame sözdizimini kullanır. İşte tam changelog: github.com/mbuettner/retina/blob/master/CHANGELOG.md
Martin Ender

@ MartinBüttner güzel. Bu, Retina'nın artık bu muafiyeti talep edemediği anlamına mı geliyor ?
Dijital Travma

@DigitalTrauma Bence hala en doğal girdi şekli. Ayrıca, bu tür bir dilin bu şekilde nasıl desteklendiğini asla anlamadım.
Martin Ender

6

Haskell, 44 bayt

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

Ne yazık sortolduğunu Data.Listyani 17 byte oluyor!


6

JavaScript (ES6), 65 62 54 52 bayt

Edc65 sayesinde 3 bayt kurtardı

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

2'den tüm sayıların bir dizesini oluşturur x, ardından başa böler, sıralar, birleştirir ve 1 ekler. Bu hala golf edilebilir olabilir; öneri hoş geldiniz!


Elimde ES6 yok, ancak kullanamazsınız (yeni) Array(x-1).map((_,y)=>y+2)?
Conor O'Brien,

@ CᴏɴᴏʀO'Bʀɪᴇɴ haritası boş dizi elemanlarını atlar, bu yüzden kullanmanız gerekir Array(n).fill().map(...(bkz. ES6 ipuçları)
edc65

Madeni göndermek için çok geç, ama sizin için bir ipucu: n=>1+[...[...Array(n-1)].map(_=>++n,n=1).join``].sort().join`` (1 byte daha kısa, bu bölünmüş)
edc65

@ edc65 ve Cᴏɴᴏʀ O'Bʀɪᴇɴ Tavsiyeler için teşekkürler! Neden .split()bu kadar garip hissettim ki merak ettim ...
ETHproductions

@ edc65 Huh, benim çözümüm seninkiyle aynı uzunlukta:n=>1+[...[...Array(n+1).keys()].slice(2).join``].sort().join``
Neil


5

Mathematica, 52 bayt

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

Bir kez daha, dize işlemi oldu ...


Sanırım IntegerDigitslistelerin üzerinde konu var, haritaya ihtiyacın yok.
Martin Ender

Ah doğru, öncelik.
Martin Ender

4

APL (17)

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

Açıklama:

'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

Ölçek:

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

Güzel! Benimkinden çok daha iyi. : DI , diziyi düzelttiğini ve size bir dize verdiğini farketmedi . Bunu bilmek güzel.
Alex A.

3

Python 2,60 bayt

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

3

ClojureScript, 48 bayt

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

Diğerleriyle aynı, hemen hemen. REPL burada mevcut .


3

Ruby, 48 bayt

Anonim bir işlev. Temelde burada sadece bazı diğer cevapları Ruby Ruby ..

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

3

Brachylog , 76 41 bayt

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

Giriş olarak bir sayı alır.

Bu çözüm, yerleşik Findall yükleminde yaptığım birkaç değişiklikle işe yarıyor f. OP görünüşe göre cevaptan daha eski dilleri kullanmakta sorun yok, bu yüzden bunun iyi olduğunu düşünüyorum (yaptığım değişiklikler uzun zaman önce yapılmaya niyetliydi, kendimi sadece bu zorluk yüzünden yapması için motive ettim).

açıklama

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 bayt

Smalltalk'ta her zamanki gibi, kavramsal olarak çok özlü ama metinsel olarak çok ayrıntılı ...

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

Bunu bir sınıf yöntemi olarak ekleyin Stringve buna benzer bir çağrı yapın, örneğin, 20String f: 20


3

Bash + GNU yardımcı programları, 58

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

Çevrimiçi deneyin.


1
Benzer bir yaklaşımım vardı, ancak "başlangıçtaki 1" bölümünün farklı kullanımı (52 bayt). Kendinizinkini tıraş edebilirsiniz: sort (1 basamak uzunluğunda, -n'ye gerek yok).
Olivier Dulac,

3

Bash, 35 34 bayt

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

Bu @ DigitalTrauma ve @ OlivierDulac'ın cevapları üzerine kuruludur . Ideone ile çevrimiçi olarak deneyin .

Nasıl çalışır

  • seq 2 $1Tüm tamsayıları 2 ile komut satırında belirtilen olanlara yazdırır .

  • fold -1 tüm satırları genişlik 1 ile kaydırır, yani her karakteri kendi satırına yerleştirir.

    -1 belgelenmemiş bir özellik gibi görünüyor.

  • sort karakterleri sayısal değerlerine göre sıralar.

  • printf %d 1`...`​ilk satıra 1 hazırlar ve her satırı %dayrılmadan tam sayı ( ) olarak yazdırır .

    Bu, tüm argümanlar tüketilinceye kadar, format dizesini tekrar tekrar tekrar eden Bash'in meraklı printf uygulamasından faydalanır.


+1, bizden daha iyisini seviyorum :)
Olivier Dulac

3

JavaScript ES6, 49 46 Bayt

2 bayt için edc65 sayesinde

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

;console.log(F(15))


1
Benzer bir şey var ama 1 bayt daha kısa. Özyinelemeli bir işlevi kullanmaya çalışın, orijinal parametre x
edc65'yi

2

Julia, 33 bayt

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

Bu bir tamsayıyı kabul eden ve bir dize döndüren bir lambda işlevidir. Aramak için değişkene atayın.

<2 2:niçin boş olacak olan aralığı nbir dizgeye birleştirir, dizgiyi bir karakter dizisine yapıştırır, sıralar, dizgeye birleştirir ve 1 hazırlar.


2

APL, 21 bayt

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

Bu, sağdaki bir tamsayıyı kabul eden ve bir dize döndüren adsız bir monadik işlevdir. Aramak için değişkene atayın.

Açıklama:

            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)

Çevrimiçi deneyin


2

Python 2,60 bayt

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

Kazanmak için endeksleme. :-)


Python 2,60 bayt

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

Sadece bir alternatif.


2

Samanyolu 1.6.4 , 22 bayt (yarışmıyor)

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

Bu meydan okuma için bir sıralama kodu eklemek zorunda kaldım.


açıklama

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

Cidden, 10 bayt

,u2xεjS'1+

Hex Dump:

2c753278ee6a5327312b

Çevrimiçi Deneyin

Açıklama:

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

2

Bash ve GNU araçları, 58 52 bayt

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

@ Dijital travmaya benzer bir yaklaşım, ancak 1'i eklemenin farklı bir yolu ve sayılar 1 basamak uzunluğunda olduğundan -n'ye gerek yok. (İlk denememi yaptıktan sonra cevabını gördüm)
Olivier Dulac

2

PowerShell, 61 59 bayt

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

Girdiyi alır param($a)ve sonra onu bir diziye dizine almak için kullanır [$a-eq1]. Doğruysa, ikinci elemanı ve çıktıyı indeksleriz 1. Aksi takdirde, 1) tarafından oluşturulan ed dizisi "1"ile joinbirleşip 2..$akendisinin bir joinaraya getirdiği yeni bir aralığın tanımlanması , 2) bir karakter dizisi olarak yayınlanması ve 3) Sort-Objectcmdlet'in içinden gönderilmesinin ardından bunların tümü çıkmaktadır.

Düzenle1 - İç -joinoperatörü hareket ettirerek 2 bayt kurtardı .


2

Gogh , 9 7 bayt

GJT1-1P

Bunu kullanarak çalıştırabilirsiniz:

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

“Bu yarışmadan sonra, bu zorluğa cevap vermek için yapılmadığı sürece bir dil kullanabilirsiniz.” Bu tür dillerin zorluklarımda rekabetçi olmasına izin veririm, genellikle;)
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ: Ah, harika! Buna dikkat çektiğiniz için teşekkürler :)
Zach Gates

2

Jöle , 8 bayt

RDFṢ1œ|Ḍ

Çevrimiçi deneyin!

Nasıl çalışır

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 bayt

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

Un-golfed

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 bayt

Dilin / derleyicinin geçerli sürümünü (7.0.0) kullanır .

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

FryTheEgggman'ın cevabından ilham aldı .

EDIT (29 Temmuz 2016): Dilde yapılan değişikliklere uyması için bazı değişiklikleri çevrimiçi olarak deneyebilirsiniz .

Örnek

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

açıklama

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 bayt

Not: Bu gönderi, bu zorluğu ileten özellikleri kullanır ve bu nedenle rekabetçi değildir.

Kod:

Lß?J{?

Açıklama:

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

ISO 8859-1 kodlamasını kullanır


Bu nasıl çalışıyor?
lirtosiast

@ThomasKwa Açıklama eklendi
Adnan

Vay. Bu fantastik!
Conor O'Brien,

1

Mathcad, 86 "bayt"

S (n) işlevi, her sayıyı dize biçimine dönüştürerek ve bir araya getirerek Champernowne "integer" oluşturmak için bir for döngüsü kullanır. Dize daha sonra ASCII kodlarının eşdeğer vektörüne dönüştürülür ve sıralanır. Ardından işlev, herhangi bir baştaki sıfırları birincisiyle değiştirir, sonunda vektörü bir dizgeye dönüştürür.

Fonksiyonu kontrol etmek için test senaryolarını bir vn vektörüne koydum, daha sonra vectorize işlecini kullanarak vn'ye s uyguladım. Daha sonra sonuçları verilen test durumu değerleriyle karşılaştırdım.

görüntü tanımını buraya girin


Mathcad, her biri metin, matematiksel bir ifade, program, çizim veya komut dosyası içeren bir bileşen olan "bölgeler" den oluşan 2D çalışma sayfalarına dayanan matematiksel bir uygulamadır.

Bir matematiksel veya programlama talimatı bir palet araç çubuğundan seçilir veya bir klavye kısayolu kullanılarak girilir. Golf oynamak için, bir işlem ("bayt"), bir ad veya ifade oluşturmak için gerekli olan klavye işlemlerinin sayısı olarak alınır (örneğin, değişkeni 3'e ayarlamak için, a: = 3 tanımlayıcısı). : = a ve 3 toplam 3 "bayt" veren tek bir tuşa basılmasıdır: Operatör için programlama ctl-shft- # yazmayı gerektirir (veya programlama araç çubuğundaki tek bir tıklatmayla) tekrar eşdeğerdir 1 bayt.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.