Terkecil yang tak terlihat, tetapi tidak berbagi angka!


28

Tantangan

Di sini, di PPCG, kami benar-benar menyukai urutan kami, jadi inilah yang menyenangkan .

Mari kita definisikan a(n)sebagai bilangan bulat non-negatif terkecil Xyang tidak sama dengan any a(k)( 0 < k < n), dan a(n-1)dan Xjangan berbagi angka desimal apa pun.a(0) = 0

Diberikan input n > 0, output seperti itu a(n).

Misalnya, untuk input n = 13, kami memiliki a(13) = 20, karena a(12) = 11dan 20adalah bilangan bulat non-negatif terkecil yang belum kami lihat yang tidak memiliki angka desimal apa pun 11.

Urutan

Berikut adalah 20 istilah pertama untuk membantu Anda memulai. Ini adalah urutan A067581 pada OEIS.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 11, 20, 13, 24, 15, 23, 14, 25

Aturan

  • Input dan output dapat dianggap sesuai dengan tipe integer asli bahasa Anda.
  • Input dan output dapat diberikan dalam format apa pun yang nyaman .
  • Anda dapat memilih untuk 0-indeks, seperti saya di sini dalam contoh saya, atau 1-indeks untuk kiriman Anda. Silakan sebutkan yang Anda lakukan.
  • Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
  • Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online agar orang lain dapat mencoba kode Anda!
  • Celah standar dilarang.
  • Ini adalah sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.

Bisakah kita mendapatkan n > 1(atau n ≥ 2) sebagai input? (1-pengindeksan)
Erik the Outgolfer

@EriktheOutgolfer Tentu, tidak apa-apa. Rupanya saya melewatkan poin-poin ketika menyalin-paste, karena itu adalah standar tantangan saya.
AdmBorkBork

5
The scatter plot yakin terlihat bagus :)
flawr

Jawaban:



7

Japt , 18 byte

@A{!ZøA «As oX}a}g

Uji secara online! Saya baru saja menambahkan gfitur yang digunakan di sini, tetapi itu adalah sesuatu yang sudah lama ingin saya tambahkan (dan ini mendorong saya ke tepi, karena non- gsolusi saya adalah sekitar 35 byte).

Penjelasan

@   A{!ZøA «  As oX}a}g
XYZ{A{!ZøA &&!As oX}a}gU
                           Implicit: U = input integer
   {                 }gU   Starting with [0, 1], return the U'th item generated by
XYZ{                 }     this function: (X = previous item, Y = index, Z = full array)
    A{             }a        Return the smallest non-negative integer A where
      !ZøA &&                  Z does not contain A (A is not yet in the sequence), and
             !As oX            A.toString() does not contain any of the same chars as X.
                           Implicit: output result of last expression

Ini membuat kepala saya sakit! Tapi, kemudian saya hampir tidak melirik salah satu metode fungsi di Japt.
Shaggy

Bukankah aturan default bahwa Anda tidak dapat menambahkan sesuatu ke bahasa setelah pertanyaan diberikan? Akan sepele sebaliknya untuk selalu selalu membuat built-in baru yang menyelesaikan tantangan, membuat mereka semua sewenang-wenang singkat.
trlkly

@ CtrlKly, saya percaya itu diperbolehkan dalam penilaian yang baik. Built-in yang saya tambahkan jauh lebih umum daripada hanya untuk satu jawaban ini. Saya pikir seseorang secara teoritis dapat menambahkan built-in yang menyelesaikan tantangan sepenuhnya, tetapi jawaban seperti itu pasti akan diterima dengan sangat buruk.
ETHproduksi


3

Haskell, 79 byte

f 0=0
f x=[i|i<-[1..],all((/=i).f)[1..x-1],all(`notElem`show(f$x-1))$show i]!!0

Kode ini sangat tidak efisien. Untuk menghitung nilai yang lebih besar, yaitu> 12, tambahkan di f x|x<11=xantara dua baris (diimplementasikan gpada tautan TIO).

Cobalah online!


1

JavaScript (ES6), 82 byte

Diindeks 0.

f=(n,x=[1,p=0])=>n--?f(x[(g=k=>x[k]||(k+'').match(`[${p}]`)?g(k+1):p=k)(0)]=n,x):p

Demo


1

Sekam , 18 byte

!¡₁;0
ḟȯ¬V€d→⁰d-⁰N

Solusi 1-diindeks. Cobalah online!

Edit: bug diperbaiki untuk +1 byte.

Penjelasan

Fungsi iterasi bawaan Hus ¡memiliki banyak arti. Di sini, saya menggunakan "buat daftar tak terbatas dengan berulang kali menambahkan elemen baru yang dihitung dari yang sudah ada". Baris kedua adalah fungsi helper yang menghitung elemen baru:

ḟȯ¬V€d→⁰d-⁰N  Takes a list of existing elements, e.g. x = [0,1,...,10]
           N  The positive integers
         -⁰   with elements of x removed:        [11,12,13,...
ḟȯ            Find an element n of this list that satisfies:
        d     Digits of n.
   V          Is any of them
    €         an element of
     d        the digits of
      →⁰      the last element of x?
  ¬           Negate.
              Returns 22.

Baris pertama adalah fungsi utama:

!¡₁;0  Takes an integer k.
 ¡     Iterate adding new elements to the list
   ;0  [0]
  ₁    using the helper function,
!      take k'th element of result.

Saya telah menambahkan Sekam ke daftar bahasa golf ; tolong beri tahu saya jika ada detail yang salah.
ETHproduksi

1

Haskell, 78 byte

n!k|r:_<-[j|j<-[1..],all(/=j)k,all(`notElem`show n)$show j]=n:r!(r:k)
(0![]!!)

Akan lebih efisien lagi jika argumen kedua !bukan daftar angka yang terlihat tetapi angka yang tidak terlihat. Tapi saya tidak bisa melakukan itu tanpa menggunakan lebih banyak byte.

Cobalah online!


0

Mathematica 115 Bytes

Masih ada ruang untuk bermain golf ini - dan mungkin menggunakan rekursi (sehingga mempercepatnya).

(For[z={0};i=1,Length@z<#,
For[i=1,!FreeQ[z,i]||!DisjointQ@@IntegerDigits/@{l,i},i++];
z~AppendTo~i;l=Last@z;
];l)&

Kode verbose asli, dengan ide dasar yang sama:

MakeSequenceA067581[n_]:=Module[{list={0}, innerCounter=1},

While[Length@list<n,
innerCounter=1;
(* inner loop *)While[Or[MemberQ[list,innerCounter],Intersection[IntegerDigits[Last@list],IntegerDigits[innerCounter]]!={}],innerCounter++];
AppendTo[list,innerCounter];
];
list
]
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.