ไม่มีใครได้โปรด!


20

1ฉันอย่างเกลียดหลัก ดังนั้นฉันต้องการให้คุณช่วยแปลงตัวเลขเป็น "รูปแบบที่เหมาะสม" ของพวกเขา

ตัวเลขในรูปแบบที่เหมาะสมไม่เคยมีสอง1s ในแถว 101ไม่เป็นไร แต่110น่าเกลียด

ในการแปลงเพียงข้ามจำนวนที่ไม่เหมาะสมทั้งหมดและนับตามปกติ เช่น ...

1 -> 1
2 -> 2
...
10 -> 10
11 -> 12
12 -> 13
...
108 -> 109
109 -> 120
110 -> 121
111 -> 122

และอื่น ๆ

โปรแกรมของคุณควรใช้จำนวนเต็มและส่งออกในรูปแบบที่เหมาะสม นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ


1
มีขอบเขตบนของอินพุตหรือไม่
lirtosiast

2
ฉันไม่ได้รับการ109 -> 120แปลง ...
kirbyfan64sos

4
@ kirbyfan64sos ตั้งแต่ 108 แผนที่ถึง 109, 109 จะแมปไปยังหมายเลขถัดไปซึ่งคือ 110 แต่อันนั้นมีสอง 1s ในแถวดังนั้นมันจะไปยังหมายเลขถัดไปจนกว่าจะถึงเลขที่ไม่มี ซึ่งเท่ากับ 120 เนื่องจากไม่รวม 110-119 ทั้งหมด
Reto Koradi

3
@Corey Ogburn มันไม่เกี่ยวกับ binairy ดูว่ารายการของตัวเลขจะเป็นอย่างไรเมื่อคุณนับจำนวนที่กำหนดโดยไม่มีกฏ 11 สำหรับแต่ละหมายเลขในรายการ
LukStorms

2
@leymannx ตัวเลขทางด้านซ้ายแสดงถึงหมายเลขในซีรีส์ ดังนั้นค่าแรกในชุดคือ 1, ค่าที่สองในชุดคือ 2, yadda yadda (lobster bisque), ค่าที่สิบในชุดคือ 10, และค่าที่สิบเอ็ดในชุดคือ 12 เพราะเราข้าม 11 เป็น talex พบว่ามันเป็นสิ่งที่น่ารังเกียจแก่ท่าน ความคิดนี้ยังคงดำเนินต่อไปดังนั้นเหตุใดค่า 108 ในซีรีส์คือ 109 และค่า 110 ในซีรีส์คือ 120 เพราะเราข้ามทุกอย่างจาก 110 เป็น 119 หวังว่าฉันจะอธิบายได้ดีพอ
ahall

คำตอบ:



8

Perl 5 , 34 Bytes

วนรอบเคาน์เตอร์และเปลี่ยน double-one เป็นครั้งคราว

map{$i++;$i=~s/11/12/}1..pop;say$i

ทดสอบ

$ perl -M5.012 -e 'map{$i++;$i=~s/11/12/}1..pop;say$i' 111
$ 122


6

Pyth, 13 11 ไบต์

e.f!}`hT`ZQ

บันทึก 2 ไบต์ขอบคุณ @FryAmTheEggman

กรณีสาธิตและการทดสอบสด

รุ่น 13 ไบต์

e.f!}"11"+ZkQ

บริบท: Pyth , PythและPyth
Peter Mortensen

@PeterMortensen อันที่สามไม่เกี่ยวข้องกับ Pyth ที่ใช้ที่นี่ - มันมาจาก 8 ปีก่อนที่ Pyth นี้จะถูกสร้างขึ้นจริง Pyth เป็นชื่อที่ได้รับความนิยมสำหรับภาษา Python
isaacg

5

JavaScript ขนาด 53 ไบต์

n=>[...Array(n*2).keys()].filter(a=>!/11/.test(a))[n]

ทางเลือก (ใช้ความเข้าใจความยาวเท่ากัน):

n=>[for(i of Array(n*2).keys())if(!/11/.test(i))i][n]

ดีใจที่ได้เห็น แต่ overkill สำหรับงานนี้ codegolf.stackexchange.com/a/61594/21348
edc65

4

Python 2, 50

lambda n:[i for i in range(n*2)if'11'not in`i`][n]

ฟังก์ชั่นที่ไม่ระบุชื่อที่แสดงหมายเลขที่ไม่ได้11เรียงตามลำดับและรับหมายเลขnนั้น ข้อผิดพลาดแบบหนึ่งต่อหนึ่งของการยกเลิกการจัดทำดัชนีเป็นศูนย์โดยมีการรวมไว้0ในรายการ

ในทฤษฎีนี้จะล้มเหลวสำหรับตัวเลขที่สูงพอสมควรf(n)>2*nแต่เรื่องนี้ไม่ควรเกิดขึ้นจนเป็นอย่างน้อยn10**50


51 ไบต์:

n=input();i=0
while n:i+=1;n-='11'not in`i`
print i

นับจำนวนiจนกระทั่งโควต้าของnตัวเลขที่ไม่มี11ตรง

ฟังก์ชั่นมีความยาวเท่ากันเนื่องจากต้องการการแก้ไขแบบออฟไลน์

f=lambda n,i=0:n+1and f(n-('11'not in`i`),i+1)or~-i

3

Python 3 74

ยังต้องเล่นกอล์ฟนิดหน่อย

n=int(input())
c=0
for x in ' '*n:
 c+=1
 while'11'in str(c):c+=1
print(c)

ตอนนี้มันกำลังดุร้าย



2

JavaScript (ES6) 41

เป็นฟังก์ชั่นนิรนาม

n=>eval('for(i=0;/11/.test(++i)||n--;)i')

หมายเหตุ: วิธีที่ง่ายที่สุดคือ 44:

n=>{for(i=0;/11/.test(i)||n--;i++);return i}

ทดสอบการเรียกใช้ตัวอย่างข้อมูลด้านล่าง

f=n=>eval('for(i=0;/11/.test(++i)||n--;)i')

alert(f(+prompt('Enter number')))


2

Haskell, 51 ไบต์

([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!)

ตัวอย่างการใช้งาน: ->([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!) 110121

มันทำงานอย่างไร:

[x|x<-[0..]                                   ]    -- take all x starting with 0
           ,                                       -- where
                   ('1','1')                       -- the pair of two chars '1'
            notElem                                -- is not part of
                             zip=<<tail            -- the list of pairs of neighbor elements of
                                        show x     -- the string representation of x
                                               !!  -- take nth element, where n is the parameter

1

MUMPS, 37 ไบต์

t(i) f j=1:1 s:j'[11 k=k+1 q:k=i
    q j

ตรงไปตรงมาสวย สิ่งเดียวที่ "น่าสนใจ" ที่นี่คือโครงสร้างj'[11- '[คือตัวดำเนินการ "ไม่มี" ดังนั้นจึง"abc"'["ab"เป็นเท็จและ"abc"'["cd"เป็นจริง แม้ทั้งตัวถูกดำเนินการj'[11เป็นตัวเลข แต่ MUMPS ก็ยังไม่ถูกรบกวน มันจะทำให้ทั้งสองตัวถูกดำเนินการเป็นสตริงอย่างอัตโนมัติและมีความสุขกับชีวิตของมัน ไชโย!

(อนึ่งถ้าคุณโอเคกับโปรแกรมไม่ยุติเราสามารถลดระยะนี้ถึง 35 ไบต์: t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j)



-1

ทับทิมขนาด 24 ไบต์

ตีความงานผิดจะทำงานซ้ำในภายหลัง!

$><<gets.gsub('11','12')

11ไม่ทำงานบนปัจจัยการผลิตที่ไม่ได้มี ยกตัวอย่างเช่น12ควรจะให้ไม่ได้13 12
DLosc

@DLosc โอ้พุทโธ่ฉันตีความผิดภารกิจ! ฉันจะทำใหม่ในภายหลัง!
Peter Lenkefi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.