เชื่อมต่อ n กับ n + 1


44

บทนำ

ลำดับ OEIS A127421คือลำดับของตัวเลขที่การขยายทศนิยมคือการต่อกันของตัวเลขที่ไม่ใช่ลบเพิ่มขึ้น 2 ครั้งติดต่อกัน ใส่เพียงตัวเลขในลำดับทุกคนจะเกิดขึ้นจากการร่วมกันวางnกับ1 + nสำหรับบางคนที่ไม่ใช่เชิงลบจำนวนเต็มค่าของn หลายคำแรกคือ:

1, 12, 23, 34, 45, 56, 67, 78, 89, 910, 1011, 1112, 1213, 1314, 1415, 1516, 1617, 1718, 1819, 1920, 2021, 2222, 2324, 2425, 2526, 2627, 2728, 2829, 2930, 3031, 3132, 3233, 3334, 3436, 3536, 3637, 3738, 3738, 3839, 3940, 4041, 4142, 4243, 4344, 4445, 4546, 4546, ...

ท้าทาย

รับจำนวนเต็มบวกเดียวnให้พิมพ์nรายการแรกของลำดับ OEIS A127421 เพื่อเพิ่มลำดับ

  • input และ output สามารถอยู่ในรูปแบบที่ยอมรับใดสตริงหรือตัวเลขนั้นใช้ได้สำหรับเอาต์พุต
  • ไม่อนุญาตเลขศูนย์นำหน้า
  • อนุญาตให้ใช้โปรแกรมหรือฟังก์ชั่นเต็มรูปแบบได้
  • สำหรับจุดประสงค์ของการท้าทายนี้nจะเป็นค่าบวกและต่ำกว่า 100
  • ช่องโหว่มาตรฐานจะไม่ได้รับอนุญาตตามค่าเริ่มต้น
  • คำถามนี้คือการเขียนโค๊ต
  • นี่คือตัวอย่างอินพุตและเอาต์พุตตัวอย่าง:

    1 => 1
    2 => 1, 12
    3 => 1, 12, 23
    10 => 1, 12, 23, 34, 45, 56, 67, 78, 89, 910
    

หากคุณมีคำถามใด ๆ อย่าลังเลที่จะถาม โชคดี.

ป.ล. นี่เป็นความท้าทายครั้งแรกของฉันดังนั้นหวังว่าทั้งหมดนี้จะสมเหตุสมผล

แก้ไข: ลบข้อ จำกัด การส่งออกเพื่อให้ตัวเลขหรือสตริง


1
สามารถเป็นดัชนี 0 หรือไม่
Jo King

3
ยังไม่มีใครพูดถึง แต่ยินดีต้อนรับสู่ PPCG! คำถามแรกที่ดีไม่ยากเกินไป แต่ก็ไม่น่ารำคาญอย่างสมบูรณ์และมีหลายวิธีที่แตกต่างกัน
Jo King

3
หลังจาก 7 วันฉันจะยอมรับคำตอบที่สั้นที่สุดซึ่งตรงกับเกณฑ์เหล่านี้ทั้งหมด ทำไมต้องมีความท้าทายที่จะจบ
Erik the Outgolfer

2
ทุกวันนี้เรามักจะไม่ยอมรับคำตอบเพราะมันเป็นการขัดขวางการโพสต์คำตอบเพิ่มเติม ฉันคิดว่าคุณใช้ความท้าทายแบบเก่า (ซึ่งเป็นกำลังใจเช่นกัน) ดูสิ่งที่ต้องหลีกเลี่ยงเมื่อเขียนความท้าทาย
27,029,294

2
@Dennis Ok ฉันจะลบวันที่ออกจากการท้าทาย บางทีฉันอาจจะยอมรับเมื่อไม่มีคำตอบใหม่เกิดขึ้นอีก
ครึ่งบกครึ่งน้ำ

คำตอบ:


13

เยลลี่ 3 ไบต์

ŻVƝ

ลิงก์ monadic ยอมรับจำนวนเต็มซึ่งให้รายการของจำนวนเต็ม

ลองออนไลน์!

อย่างไร?

ŻVƝ - Link: integer       e.g. 59
Ż   - zero-range               [0,1,2,3,4,5,6, ... ,58,59]
  Ɲ - apply to each pair: i.e: [0,1] or [5,6]  or  [58,59]
 V  -   evaluate* jelly code   1     or 56     or  5859
    -                       -> [1,12,23,45,56, ... 5859]

* When given a list V actually joins the Python string values and evaluates that
  ...so e.g.: [58,59] -> ['58','59'] -> '5859' -> 5859

เดนนิสพ่ายแพ้!
Okx

10

R , 32 ไบต์

strtoi(paste0((x=1:scan())-1,x))

ลองออนไลน์!

Outgolfed โดยMickyTดังนั้นให้ตอบคำถามนั้นได้เลย!


มีการแก้ไขเพื่ออนุญาตให้ใช้สตริง ... ไม่จำเป็นต้องมี strtoi!
JayCe

2
@ JayCe จำเป็นต้องตัดส่วนนำ0จากเอาต์พุตแรก
Giuseppe

คุณไม่สามารถลบศูนย์นำออกด้วยการลงท้ายด้วย[-1]แทนที่จะใช้strtoiหรือว่าล้มเหลวในบางกรณีหรือไม่?
JDL

@JDL strtoiจะถูกใช้ในการแปลงจาก"01"ไป1เพราะpaste0จะกลับมาและเราจะไม่ได้รับอนุญาตให้กลับมาc("01","12","23","34",...) "01"
จูเซปเป้

1
@CriminallyVulgar ขออภัยที่จะไม่สามารถป้อนข้อมูลของ1
Giuseppe



7

Cubix , 19 ไบต์

I.1.W)>OSo;u.uO;@!-

ลองออนไลน์!

สิ่งนี้ล้อมรอบลูกบาศก์ดังต่อไปนี้

    I .
    1 .
W ) > O S o ; u
. u O ; @ ! - .
    . .
    . .

ดูมันวิ่ง

มีห้องเล็ก ๆ ให้เล่นด้วย แต่ในขณะนี้

  • W เปลี่ยนเส้นทางไปที่หัวใบหน้าด้านบนลง
  • I1> ตั้งค่าสแต็กด้วยอินพุตและ 1 จากนั้นเปลี่ยนทิศทางไปยังลูปหลัก
  • OSo;u เอาท์พุทด้านบนของสแต็คเพิ่มพื้นที่ในการสแต็คเอาท์พุทเอาออกและออก
  • -!@;Ou)ลบ TOS ออกจากอินพุตถ้า 0 หยุดมิฉะนั้นผลลัพธ์ที่ปรากฏป๊อปเอาต์ TOS, uturn และ TOS ที่เพิ่มขึ้น กลับเข้าสู่วงหลัก

7

Perl 6 , 19 18 ไบต์

{(^$_ Z~1..$_)X+0}

ลองออนไลน์!

การบล็อกโค้ดแบบไม่ระบุชื่อที่ซิปช่วง 0 ถึง n-1 ด้วย 1 ถึง n โดยใช้ตัวดำเนินการเรียงต่อกันจากนั้นเพิ่ม 0 ให้กับทุกองค์ประกอบเพื่อบังคับให้มีจำนวนและลบ 0s นำหน้า


5

R , 30 29 ไบต์

ไบต์พิเศษที่ต้องขอบคุณ @Giuseppe

10^nchar(n<-1:scan())*(n-1)+n

ลองออนไลน์!

วิธีการแก้ปัญหาทางคณิตศาสตร์ส่วนใหญ่ยกเว้นสำหรับการใช้มากกว่าnchar() floor(log10())ฉันแปลกใจจริงๆที่มันสั้นกว่าเวอร์ชั่นสตริง


29 ไบต์! การทำงานที่ดีในเรื่องนี้ฉันจะไม่คิดว่ามันจะ!
Giuseppe

@iuseppe ขอบคุณสำหรับไบต์พิเศษ
MickyT



4

Python 2 , 42 41 ไบต์

f=lambda n:n-1and f(n-1)+[`n-1`+`n`]or[1]

ลองออนไลน์!

ฟังก์ชั่นวนซ้ำที่ส่งคืนรายการสตริงและจำนวนเต็มแบบผสม


คุณตั้งใจจะแก้ไขคำอธิบายต้นฉบับ "ฟังก์ชันที่ไม่ระบุชื่อที่ส่งคืนรายการ"
แยกผลไม้

@EsolangingFruit โอ๊ะโอคงที่แล้ว! ขอบคุณ
Jo King

บางทีฉันอาจจะหายไปบางอย่าง แต่ดูเหมือนจะไม่ได้มี '12' เป็นองค์ประกอบที่สอง
ElPedro

2
@ElPedro นั่นสามารถแก้ไขได้โดยการบันทึกไบต์ด้วยn and
Mr. Xcoder

1
บ่อยครั้งที่การแก้ไขบันทึกไบต์ :-)
ElPedro


4

Blossomขนาด 88 ไบต์

rule e<int x>[1(x)]=>[1(x-1),2(str(x)+str(x+1))|1->2];rule c[1(0),2|1->2]=>[2("12")];e!c

Blossom เป็นภาษาการเขียนโปรแกรมกราฟที่ฉันกำลังทำงานอยู่ มันสามารถใช้กราฟเป็นอินพุตดังนั้นโปรแกรมนี้คาดว่ากราฟที่ประกอบด้วยโหนดเดียวที่มีป้ายชื่อเป็นจำนวนเต็ม ส่งคืนกราฟของขอบที่เชื่อมต่อเพื่อสร้างอาร์เรย์ที่ใกล้เคียงที่สุดกับอาร์เรย์ที่ฉันสามารถหาได้และกราฟผลลัพธ์จะถูกพิมพ์ไปยังเอาต์พุต

รหัสที่ไม่ได้แก้ไขคือ:

rule expand <int x>
    [ 1 (x) ]
 => [ 1 (x-1), 2(str(x)+str(x+1)) | 1->2 ]
where x > 0;

rule clean
    [ 1 (0), 2 ("12") | 1->2 ]
 => [ 2 ("12") ];

expand! clean

มันกำหนดสองกฎ: หนึ่งเรียกว่าexpandซึ่ง (ในขณะที่มีโหนดที่มีป้ายมูลค่าจำนวนเต็มในกราฟปัจจุบัน) สร้างโหนดอื่นที่มีการเพิ่มการต่อกันที่เพิ่มขึ้นและลดค่า มันยังสร้างขอบระหว่างสองโหนดนี้ กฎนี้ยังมีเงื่อนไขที่ x มากกว่า 0

!รันกฎนี้ให้นานที่สุดเท่าที่จะสามารถนำมาใช้ในกราฟดังนั้นในกรณีนี้มันจะดำเนินการจนกว่า x เป็น 0 แล้วcleanกฎเอานี้ 0 โหนดและขอบ

Blossom ไม่ได้ถูกออกแบบมาเพื่อการเล่นกอล์ฟ แต่มันก็ไม่ได้ทำอะไรที่แย่เกินไปฉันไม่คิดว่าเมื่อพิจารณาว่ามันคืออะไร ขณะนี้ยังไม่มีวิธีที่ง่ายสำหรับผู้ที่จะทดสอบรหัสเบ่งบาน (และล่ามที่ฉันกำลังทำอยู่ในขณะนี้ยังไม่เสร็จสมบูรณ์และมีข้อผิดพลาดเล็กน้อย) แต่นี่ไม่ใช่รายการแข่งขัน!



3

เช็คสเปียร์ 703 ไบต์

Q.Ajax,.Ford,.Act I:.Scene I:.[enter Ajax and Ford]Ford:Open mind!Scene V:.Ajax:You is the sum of thyself the sum of myself the sum of a big bad fat old red pig a big bad fat old lie!Ford:Open mind!Is you nicer zero?Ajax:If so, you is twice the sum of the sum of twice thyself twice thyself thyself!If so,Let us Scene V!Ford:You a cat!Open heart!Scene X:.Ajax:You is the sum of thyself a pig!Is you worse than a cat?If so,let us Scene C.Remember thyself.You is the sum of the sum of a big old red cute rich cat a big old red cute joy a big old pig!Speak mind!You is a big old red cute rich cat!Speak mind!Recall!Ford:Open heart!You is the sum of thyself a joy!Open heart!Let us Scene X.Scene C:.[exeunt]

ลองที่นี่

รุ่นที่ไม่ได้ถูกดัดแปลง

127421th Night.
Ajax, likes to read the stars.
Ford, someone Ajax can always count on.
Act I:.
Scene I: Ajax reads a star.
[enter Ajax and Ford]
Ford: Open your mind! 
Scene V: Ford counts what ajax has learned.
Ajax: you are the sum of thyself and the sum of myself and the sum of a big bad fat old red pig and a big bad fat old lie!
Ford: Open Your mind! Are you nicer than zero?
Ajax: If so, you are twice the sum of the sum of twice thyself and twice thyself and thyself! 
If so, Let us Scene V!
Ford: You are a cat! Open your heart!

Scene X: Ajax and Ford recall the nights.
Ajax: You are the sum of thyself and a pig! Are you worse than a cat? If so, Let us Scene C.
Remember thyself. 
You are the sum of the sum of a big old red cute rich cat and a big old red cute joy and a big old pig! 
Speak you mind!
You are a big old red cute rich cat! Speak your mind! Recall your finest hour!
Ford: Open your heart! You are the sum of thyself and a joy! Open your heart! Let us Scene X.
Scene C: Fin.
[exeunt]

3

Groovyขนาด 35 ไบต์

{(0..<it)*.with{""+it+++it as int}}

ลองออนไลน์!

ฉันคิดขึ้นมาในนาทีสุดท้ายโดยใช้แนวคิด * .with แทน. collect ฉันไม่รู้ว่าit+++itจะแยกวิเคราะห์อะไรแต่ไม่ว่าจะเป็นit++ + itหรือit + ++itพวกเขาทั้งสองทำสิ่งเดียวกัน ฉันพยายามคิดถึงวิธีกำจัด <ใน .. <โดยเปลี่ยนมันเป็น 1. มันและลดลง แต่ฉันไม่คิดว่ามันจะสั้นกว่านี้


ยินดีต้อนรับสู่ PPCG; โพสต์แรกที่ดี! เกี่ยวกับการแยกของa+++b, การทดสอบนี้(a++)+bแสดงให้เห็นว่ามันจะแยกจากซ้ายไปขวาหมาย
Jonathan Frech

3

C (gcc) , 44 43 ไบต์

f(i){i--&&printf(" %2$d%d"+5*!f(i),i+1,i);}

ลองออนไลน์!


@DLosc %m$ระบุรูปแบบ "หมายถึงตำแหน่งในรายการอาร์กิวเมนต์ของอาร์กิวเมนต์ที่ต้องการจัดทำดัชนีราคาเริ่มต้นที่ 1" (printf(3)หน้าคน) มันค่อนข้างมีประโยชน์ตราบใดที่ไลบรารี C ของคุณรองรับ!
ErikF

ขอบคุณ ... แต่ฉันยังคงสับสนว่าทำไม%d%d(และเปลี่ยนคำสั่งของข้อโต้แย้ง) ไม่ทำงาน (ฉันลองแล้ว แต่ไม่รู้ว่าทำไมมันไม่สร้างผลลัพธ์ออกมา)
DLosc

@DLosc หากคุณเปลี่ยนสตริงรูปแบบตรวจสอบให้แน่ใจว่าได้เปลี่ยนออฟเซ็ตหลังจากนั้น (เช่น" %d%d"ควรมี+3*!f(i); มิฉะนั้น, +5 คะแนนออฟเซ็ตเป็น NUL ที่ท้ายสตริง)
ErikF

โอ้โอเค - ในที่สุดผมก็จะได้รับมัน: ความ "# 2 แล้ว # 1" เป็นสิ่งจำเป็นเพราะในกรณีฐานสตริงรูปแบบที่สั้นลงจะกลายเป็นเพียง "อันดับ 1" และดังนั้นคุณต้องอาร์กิวเมนต์ printf แรกที่จะไม่i+1 iน่าสนใจมาก.
DLosc

3

Pyth , 9 8 6 ไบต์

ms+`dh

ลองออนไลน์!

คำอธิบาย:

       - implicit output
m      - map function with argument d:
  +    -  concatenate
    d  -  argument d
   `   -  to string
     h -  into implicit d + 1
       - into Q (implicit input)

1
ยินดีต้อนรับสู่ PPCG! :)
Shaggy

@Shaggy ขอบคุณนี่เป็นครั้งแรกที่ฉันทำสิ่งนี้
u_ndefined



2

05AB1E , 6 ไบต์

>GNJ,N

ลองออนไลน์!

คำอธิบาย

>G       # for N in [1 ... input]
  N      # push N
   J     # join stack
    ,    # print
     N   # push N (for next iteration)

LεD<ìï จะทำงานสำหรับจำนวนไบต์เดียวกัน แต่มีรายการผลลัพธ์




2

Japtap -m , 6 5 ไบต์

ó2 ¬n

ลองออนไลน์!

และเช่นเคยรู้ว่าธง

เอาออกแล้วมันทำงานอย่างไร

-m       Convert to range and map...

Uó2 q n
Uó2      Construct [U, U+1]
    q    Join
      n  Convert to number

         Implicit output (Array is printed as comma-delimited values)

5 ไบต์ ไม่ทราบว่าทำไมไม่ได้ทำงานที่นี่ได้โดยไม่ต้องó 2
Shaggy

ฉันมีวิธีแก้ปัญหา 2 ไบต์ 5 อื่น ๆ (ทั้งสองวิธีใช้วิธีเดียวกัน) ที่ไม่ได้ใช้แฟล็กหากใครที่ต้องการแทงพวกเขา
Shaggy

ฉันคิดว่า 5 + 2 = 7 ไบต์เพราะธง
u_ndefined


2

C # (Visual C # Interactive Compiler) , 103 71 64 56 ไบต์


Golfed ลองออนไลน์!

i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}

Ungolfed

i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
}

รหัสเต็ม

Action<Int32> a = i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
    };

Int32[]
    testCases = new Int32[] {
        1,
        2,
        3,
        10,
    };

foreach( Int32[] testCase in testCases ) {
    WriteLine( $" Input: {testCase}\nOutput:" );
    a(testCase);
    WriteLine("\n");
}

รุ่นเก่ากว่า:

  • v1.2, 64 ไบต์

    i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.1, 71 ไบต์

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.0, 103 ไบต์

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?",":"")}{x++*System.Math.Pow(10,$"{x}".Length)+x}");}

ข่าว

  • v1.3 - - 8 bytes- ลบออกConsoleขอบคุณอีกครั้งเพื่อraznagul
  • v1.2 - - 7 bytes- ลบออกSystemขอบคุณraznagul
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- โซลูชั่นเริ่มต้น

หมายเหตุ

  • ไม่มี

1
C # System.Consoleอินเตอร์แอคทีคอมไพเลอร์มีการนำเข้าคงที่สำหรับ ดังนั้นคุณสามารถบันทึก 15 ไบต์โดยการลบ
raznagul

ขวา! นิสัยที่ต้องใช้มัน
auhmaan

คุณสามารถลบได้Console.: TIO
raznagul


2

ABAP, 101 ไบต์

ไม่ใช่ภาษากอล์ฟจริงๆ แต่ฉันสนุกกับมันมาก

WHILE x<w.
CLEAR z.
IF x=1.
WRITE x.
ELSE.
CONCATENATE y x INTO z.
WRITE z.
ENDIF.
y=x.
x=x+1.
ENDDO.

W คือคำศัพท์ที่ป้อน, X คือตัวนับจาก 1, Y คือ X-1 จากการส่งผ่านครั้งที่สองเป็นต้นไป, Z คือสตริงที่ต่อกัน


2

Powershell, 27 26 ไบต์

1.."$args"|%{"$p$_";$p=$_}

-1 ไบต์: ขอบคุณAdmBorkBork

สคริปต์ทดสอบ:

$f = {
1.."$args"|%{"$p$_";$p=$_}
}

&$f 1
""
&$f 2
""
&$f 3
""
&$f 10
""
&$f 46

1
คุณสามารถบันทึกไบต์ทำ1.."$args"แทน
AdmBorkBork



2

Javascript, 43 44,46,49,53ไบต์

n=>[...Array(n)].map((_,a)=>~~(a+(a+1+"")))

รุ่นก่อนหน้า:

n=>[...Array(n)].map((_,a)=>~~(a+(""+ ++a)))
n=>[...Array(n)].map((_,a)=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>parseInt(a+(""+ ++a)))

บันทึก 3 ไบต์ด้วยวิธีแก้ปัญหาของ @ Shaggy (ซึ่งดีกว่าของฉัน) เพื่อลบ .keys()


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