ลำดับเพื่อนบ้านใหม่


24

จำนวนเต็มที่ไม่เป็นลบนั้นเบื่อที่จะมีเพื่อนบ้าน * สองคนเหมือนกันเสมอดังนั้นพวกเขาจึงตัดสินใจรวมสิ่งต่าง ๆ เข้าด้วยกันเล็กน้อย อย่างไรก็ตามพวกเขายังขี้เกียจและต้องการที่จะอยู่ใกล้กับตำแหน่งเดิมมากที่สุด

พวกเขามาพร้อมกับอัลกอริทึมต่อไปนี้:

  • องค์ประกอบแรกคือ 0
  • องค์ประกอบเป็นจำนวนที่น้อยที่สุดที่ยังไม่อยู่ในลำดับและที่ไม่ได้เป็นเพื่อนบ้านขององค์ประกอบnเสื้อชั่วโมง(n-1)เสื้อชั่วโมง

สิ่งนี้จะสร้างลำดับที่ไม่สิ้นสุดต่อไปนี้:

0,2,4,1,3,5,7,9,6,8,10,12,14,11,13,15,17,19,16,18,20,22,24,21,23,25,27,29,26,28 ...

0เป็นองค์ประกอบแรก 1เป็นจำนวนที่น้อยที่สุดยังไม่ได้อยู่ในลำดับ 0แต่มันเป็นของเพื่อนบ้าน จำนวนที่น้อยที่สุดถัดไปคือ2ดังนั้นมันจึงเป็นองค์ประกอบที่สองของลำดับ ตอนนี้ตัวเลขที่เหลือเป็น1,3,4,5,6,...แต่ขณะที่ทั้งสอง1และ3เป็นเพื่อนบ้านของ2, 4เป็นสมาชิกที่สามของลำดับ ในฐานะที่1ไม่ใช่เพื่อนบ้านของ4มันในที่สุดก็สามารถใช้สถานที่เป็นองค์ประกอบที่สี่

งาน

เขียนฟังก์ชั่นหรือโปรแกรมเป็นไบต์น้อยที่สุดซึ่งสร้างลำดับข้างต้น

คุณอาจ

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

ทั้งการทำดัชนีเป็นศูนย์หรือหนึ่งครั้งนั้นใช้ได้ในกรณีที่คุณเลือกหนึ่งในสองตัวเลือกหลัง

คุณไม่จำเป็นต้องทำตามอัลกอริทึมที่ระบุไว้ข้างต้นวิธีการใด ๆ ที่สร้างลำดับเดียวกันก็ใช้ได้


แรงบันดาลใจจากกอล์ฟรหัสการเปลี่ยนแปลงที่ดีที่สุด ปรากฎนี้เป็นA277618
* Zero มีเพื่อนบ้านเพียงคนเดียวและไม่สนใจ


คำตอบ:


18

JavaScript (ES6), 13 ไบต์

ส่งกลับ THระยะของลำดับn

n=>n-2-~++n%5

ลองออนไลน์!

อย่างไร?

การคำนวณนี้:

n-2+((n+2)พอควร5)

           n |  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 ...
-------------+--------------------------------------------------
       n - 2 | -2 -1  0  1  2  3  4  5  6  7  8  9 10 11 12 ...
 (n+2) mod 5 |  2  3  4  0  1  2  3  4  0  1  2  3  4  0  1 ...
-------------+--------------------------------------------------
         sum |  0  2  4  1  3  5  7  9  6  8 10 12 14 11 13 ...







3

Pipขนาด 14 ไบต์

02413@a+a//5*5

ใช้เวลา (0-based) เป็นอาร์กิวเมนต์บรรทัดคำสั่งและเอาท์พุทa_nลองออนไลน์!nan

สังเกตว่า 5 เราเขียนโค้ดห้าค่าแรกและชดเชยจากที่นั่นan+5=an+5


หรือสูตรที่ทุกคนใช้งานเป็นเวลา12 ไบต์ :

a-2+(a+2)%5


2

Japtet , 8 ไบต์

U-2Ò°U%5

ล่าม Japt

ตรงพอร์ตของคำตอบจาวาสคริปต์ของ Arnauld เวอร์ชันที่ลิงก์จะรันผ่าน-mอิลิเมนต์ n แรก แต่หากการลบแฟล็กนั้นยังคงใช้ได้และพิมพ์อิลิเมนต์ที่ n แทน

เพื่อประโยชน์ในการเปรียบเทียบนี่คือรุ่นที่ไร้เดียงสาซึ่งใช้อัลกอริทึมที่ให้ไว้ในคำถาม:

@_aX É«NøZ}a}gNhT

ฉันจะให้คำอธิบายสำหรับสิ่งนี้:

              NhT    Set N to [0]
@           }g       Get the nth element of N by filling each index with:
 _        }a          The first integer that satisfies:
  aX É                 It is not a neighbor to the previous element
      «NøZ             And it is not already in N

-3 ไบต์ในโซลูชันที่สองของคุณและอาจปรับปรุงได้อีก
Shaggy




2

J , 30 ไบต์

{.2}.[:,_5,./\2(i.-4 0$~])@,~]

ลองออนไลน์!

ส่งคืนรายการnหมายเลขแรก

เห็นได้ชัดว่าวิธีนี้ไม่ใช่วิธีแก้ปัญหา แต่ฉันต้องการลองใช้วิธีการแบบอาเรย์

คำอธิบาย:

ข้อโต้แย้งคือ n

2 ,] - ผนวก 2 เข้ากับอินพุต

   (2,~]) 10
10 2

()@ - และใช้รายการนี้เพื่อ:

i.- สร้างเมทริกซ์nx 2 พร้อมตัวเลขในช่วง 0..2n-1:

   i.10 2
 0  1
 2  3
 4  5
 6  7
 8  9
10 11
12 13
14 15
16 17
18 19

4 0$~]- ~ฝืนอาร์กิวเมนต์ดังนั้นมันคือ] $ 4 0 - สร้างเมทริกซ์nx 2 ซ้ำ 4 0

   4 0$~10 2
4 0
4 0
4 0
4 0
4 0
4 0
4 0
4 0
4 0
4 0

- ลบเมทริกซ์ที่สองจากเมทริกซ์แรกเพื่อให้คอลัมน์แรก "ล่าช้า" ที่มี 2 ตำแหน่ง

   2(i.-4 0$~])@,~] 10
_4  1
_2  3
 0  5
 2  7
 4  9
 6 11
 8 13
10 15
12 17
14 19

_5,./\ สำรวจเมทริกซ์ในกลุ่มที่ไม่ทับซ้อนกัน 5 แถวและต่อคอลัมน์

   _5,./\2(i.-4 0$~])@,~] 10
_4 _2  0  2  4
 1  3  5  7  9

 6  8 10 12 14
11 13 15 17 19

[:, ravel อาร์เรย์ทั้งหมด

   ,_5,./\2(i.-4 0$~])@,~] 10
_4 _2 0 2 4 1 3 5 7 9 6 8 10 12 14 11 13 15 17 19

2}. - วาง 2 ตัวเลขแรก

   2}.,_5,./\2(i.-4 0$~])@,~] 10
0 2 4 1 3 5 7 9 6 8 10 12 14 11 13 15 17 19

{.นำnตัวเลขแรก

   ({.2}.[:,_5,./\2(i.-4 0$~])@,~]) 10
0 2 4 1 3 5 7 9 6 8

J , 9 ไบต์

+_2+5|2+]

ลองออนไลน์!

ส่งคืนnองค์ประกอบที่

คำตอบของพอร์ตของ Arnauld




1

รหัสเครื่อง x86, 16 ไบต์

00000000: 31d2 89c8 4949 4040 b305 f7f3 9201 c8c3 1...II@@........

สภา:

section .text
	global func
func:	;function uses fastcall conventions, 1st arg in ecx, returns in eax
	;reset edx to 0 so division works
	xor edx, edx

	mov eax, ecx
	;calculate ecx (1st func arg) - 2
	dec ecx
	dec ecx

	;calculate (ecx+2) mod 5
	inc eax
	inc eax
	mov bl, 5
	div ebx
	xchg eax, edx
	
	;add (ecx-2) and ((ecx+2) mod 5), returning in eax
	add eax, ecx
	ret

ลองออนไลน์!





1

QBasic ขนาด 30 ไบต์

INPUT x 
x=x+2 
?-4+x*2-(x\5)*5

ให้รายการ 0 การจัดทำดัชนีของรายการที่ xPOS

ลองออนไลน์! (โปรดทราบว่า?ถูกขยายเป็นPRINTเพราะล่ามล้มเหลวเป็นอย่างอื่น ... )



1

R , 25 ไบต์

n=1:scan()-1;n-2+(n+2)%%5

ลองออนไลน์!

คำตอบของพอร์ตโรเบิร์ตเอส (และโดยการเพิ่มเพียง 4 ไบต์) ต้องขอบคุณ R ที่ยอดเยี่ยมในการจัดการเวกเตอร์

ส่งออกค่า n แรก


1

dc , 9 ไบต์

d2+5%+2-p

ลองออนไลน์!

วิธีการเช่นเดียวกับส่วนใหญ่ ทำสำเนาด้านบนสุดของสแต็กเพิ่ม 2, mod 5, เพิ่มไปยังต้นฉบับ (ทำซ้ำก่อนหน้านี้), ลบ 2, พิมพ์


0

TI-BASIC 11 ไบต์

Ans-2+remainder(Ans+2,5

Ans
a(n)

พอร์ตที่เรียบง่ายของคำตอบอื่น ๆ


หมายเหตุ: TI-BASIC เป็นภาษาโทเค็น จำนวนตัวอักษรไม่เท่ากับจำนวนไบต์

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