พิมพ์จำนวนเต็มทั้งหมด


48

เขียนโปรแกรมหรือฟังก์ชั่นซึ่งจะสามารถพิมพ์จำนวนเต็มทั้งหมดได้เพียงครั้งเดียวโดยไม่ จำกัด เวลาและหน่วยความจำ

ผลลัพธ์ที่เป็นไปได้อาจเป็น:

0, 1, -1, 2, -2, 3, -3, 4, -4, …

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -2, -3, -4, -5, -6, -7, -8, -9, 10, 11, …

นี่ไม่ใช่เอาต์พุตที่ถูกต้องเนื่องจากจะไม่ระบุจำนวนลบ:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

  • ผลลัพธ์จะต้องเป็นทศนิยมเว้นแต่ว่าภาษาของคุณจะไม่สนับสนุนจำนวนเต็มฐานสิบ (ในกรณีนั้นให้ใช้การแทนค่าจำนวนเต็มตามภาษาที่คุณใช้)

  • โปรแกรมของคุณต้องทำงานกับตัวเลขที่มีขนาดใหญ่ที่สุดของภาษาจำนวนเต็มมาตรฐาน

  • แต่ละจำนวนเต็มต้องแยกจากตัวถัดไปโดยใช้ตัวคั่นใด ๆ (ช่องว่างเครื่องหมายจุลภาคการแบ่งบรรทัด ฯลฯ ) ที่ไม่ใช่ตัวเลขหรือเครื่องหมายลบของภาษาของคุณ

  • ตัวคั่นจะต้องไม่เปลี่ยนแปลง ณ จุดใด ๆ

  • ตัวคั่นสามารถประกอบด้วยอักขระหลายตัวตราบใดที่ไม่มีตัวอักษรเหล่านั้นเป็นตัวเลขหรือเครื่องหมายลบ (เช่นถูกต้องเช่นเดียวกับ,)

  • จำนวนเต็มใด ๆ ที่รองรับจะต้องถูกพิมพ์หลังจากกำหนดระยะเวลาที่แน่นอน

เกณฑ์การให้คะแนน

นี่คือดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

ลีดเดอร์บอร์ด


3
หากภาษาของเรารองรับรายการที่ไม่มีที่สิ้นสุดเราสามารถส่งออกรายการจากฟังก์ชันแทนที่จะพิมพ์ได้หรือไม่? (การโทรพิมพ์ในรายการดังกล่าวจะพิมพ์องค์ประกอบของมันทีละครั้งตลอดไป.)
xnor

5
ฉันรู้สึกเหมือนความต้องการของจำนวนเต็มขนาดโดยพลการไม่ทำอะไรเลยนอกจากกีดกันภาษาโดยไม่ต้องมีจำนวนเต็มเช่นจากการเข้าร่วม พวกเขาจะต้องมีการนำเข้าที่พวกเขาสามารถใช้หรือแก้ไขความท้าทายที่แตกต่างกันโดยสิ้นเชิงจากคนอื่น ๆ
xnor

2
@ xnor Changed แม้ว่าซากปรักหักพังนั้นเป็นชื่อของความท้าทาย
ทำให้เสียชีวิต

5
@ xnor ภาษาที่มีจำนวนเต็มความแม่นยำโดยพลการยังคงต้องแก้ไขปัญหาที่แตกต่างจากคนอื่นดังนั้นการเปลี่ยนแปลงที่ทำสำเร็จคือการทำให้ปัญหานี้น่ารำคาญในหลายภาษา
Peter Taylor

2
@PeterTaylor ใช่นี่เป็นโชคร้าย โซลูชันการห่อไม่รู้สึกกับฉันเหมือนพวกเขากำลังพิมพ์ฟิล์มเนกาทีฟ แต่ฉันไม่เห็นวิธีที่จะระบุความแตกต่างอย่างชัดเจนเมื่อมันเป็นเรื่องของการเป็นตัวแทน
xnor

คำตอบ:


19

Sesos , 11 3 3 ไบต์

0000000: c4ceb9                                            ...

ลองออนไลน์! ตรวจสอบDebugเพื่อดูรหัส SBIN ที่สร้างขึ้น

ประกอบน้ำมัน

ไฟล์ไบนารีข้างต้นถูกสร้างขึ้นโดยการรวบรวมรหัส SASM ต่อไปนี้

set numout

jmp ; implicitly promoted to nop
    put,   fwd 1
    sub 1, put
    rwd 1, add 1
; jnz (implicit)

3 ไบต์นี้เป็นอย่างไร
หวังว่าช่วยได้

1
readme บน GitHub (เชื่อมโยงในส่วนหัว) อธิบายรายละเอียดวิธีการเข้ารหัสคำแนะนำ
เดนนิส

1
6 เลขฐานสิบหก / 2 = 3 ไบต์ @HopefullyHelpful
Stan Strum


47

Haskell, 19 ไบต์

do n<-[1..];[1-n,n]

สร้างรายการที่ไม่มีที่สิ้นสุด [0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...

Haskell อนุญาตให้มีรายการแบบไม่สิ้นสุด การพิมพ์รายการดังกล่าวจะพิมพ์องค์ประกอบหนึ่งครั้งตลอดไป


2
ฉันรัก[n,1-n]!
ข้อบกพร่อง

3
IMHO [1-n,n]จะสร้างผลผลิตที่ดีกว่า
Neil

@ นีลฉันเห็นด้วยเปลี่ยนมัน
xnor

2
อ้านั่นมัน monadese concatMap (\n -> [1-n, n]) [1..]ใช่ไหม? ดี!
Carsten S

@ CarstenS ใช่แน่นอน
xnor

29

Brainfuck, 6 ไบต์

สิ่งนี้ใช้ประโยชน์จากการห่อเซลล์และพิมพ์ค่าที่เป็นไปได้ทั้งหมด ใน brainfuck, การแสดงพื้นเมืองจำนวนเต็มโดยค่าไบต์

.+[.+]

ลองออนไลน์!


2
Nice นี่เป็นคำตอบที่สั้นที่สุด Brainfuck ที่ฉันเคยเห็นใน PPCG
Kevin Cruijssen

1
สิ่งนี้จะไม่สามารถใช้ได้กับเซลล์สมองเวอร์ชันที่มีเซลล์ที่ไม่มีขอบเขต โปรดแก้ไข (แม้ว่าจะเป็นคำตอบแยกต่างหาก)
John Dvorak

16
@JanDvorak คำตอบไม่จำเป็นต้องทำงานในทุกการใช้งานเพียงแค่หนึ่งในนั้น
Martin Ender

7
ฉันขอคำอธิบายว่าทำไมสิ่งนี้ถึงใช้ได้? ไม่มีตัวคั่นดังกล่าวในคำถามและไม่มีเชิงลบ เช่นเดียวกับความจริงที่ว่าคุณสามารถส่งออกค่ามากกว่า 9 ใน brainfuck ฉันไม่มีประสบการณ์ที่ code golf และเริ่มทำงานกับสิ่งที่เอาท์พุทเป็นลบและบวกแยกเป็นจำนวนที่สูงขึ้นก่อนที่จะเพิ่มขึ้น
gtwebb

5
@SQB แม้จะมีหน่วยความจำไม่ จำกัด ประเภทจำนวนเต็มดั้งเดิมยังคงเป็น 8 บิต จาวาintไม่ได้มีบิตมากขึ้นหรือน้อยลงเพียงเพราะคุณเพิ่มหรือลบหน่วยความจำบางส่วน
ข้อบกพร่อง

26

Cubix , 14 12 ไบต์

.(.\OSo;?.>~

ทดสอบออนไลน์! ตอนนี้คุณสามารถปรับความเร็วได้หากต้องการให้ทำงานเร็วขึ้นหรือช้าลง

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

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

    . (
    . \
O S o ; ? . > ~
. . . . . . . .
    . .
    . .

ตอนนี้รันโค้ด IP (ตัวชี้คำสั่ง) เริ่มต้นที่มุมซ้ายบนของใบหน้าซ้ายสุดชี้ไปทางทิศตะวันออก นี่คือเส้นทางที่ใช้ตลอดหลักสูตรการรันโปรแกรม:

enter image description here

IP เริ่มต้นที่เส้นสีแดงที่ด้านซ้ายสุดของภาพ จากนั้นจะรันOSo;ซึ่งทำสิ่งต่อไปนี้:

  • Oพิมพ์ TOS (top-of-stack) เป็นจำนวนเต็ม ที่จุดเริ่มต้นของโปรแกรมสแต็กจะมีศูนย์เป็นศูนย์ดังนั้นจะพิมพ์0ออกมา
  • Sกด32รหัสตัวอักษรสำหรับอักขระช่องว่าง
  • oพิมพ์ TOS เป็นตัวละคร สิ่งนี้พิมพ์ช่องว่าง
  • ;ป๊อป TOS ลบออก32จากสแต็ก

ตอนนี้ IP เข้า?มาซึ่งจะนำไปทางซ้ายขวาหรือตรงขึ้นอยู่กับสัญลักษณ์ของ TOS ตอนนี้ TOS คือ0มันตรงไปเลย นี่คือเส้นทางสีน้ำเงิน .ไม่ทำอะไรเลยและ IP ก็ชนกับลูกศร>ซึ่งนำมันไปทางตะวันออกตามเส้นทางสีแดงอีกครั้ง ~ใช้เวลาไม่บิตของ TOS -1ที่เปลี่ยนไป

ที่นี่ IP มาถึงขอบขวาของเน็ตซึ่งพันกลับไปทางซ้าย นี่พิมพ์ TOS อีกครั้ง (คราวนี้-1) และช่องว่าง

ตอนนี้ IP ชน?อีกครั้ง คราวนี้ TOS คือ-1; เนื่องจากสิ่งนี้เป็นค่าลบ IP จะเลี้ยวซ้ายเพื่อไปยังเส้นทางสีเขียว กระจก\deflects IP ไป(ซึ่ง decrements ต่อ TOS -2เปลี่ยนไป มันกลับมาแล้วยิงธนู ~ใช้เวลาบิตไม่อีกครั้งเปลี่ยนไป-21

TOS ออกมาอีกครั้งและพิมพ์พื้นที่ คราวนี้เมื่อ IP เข้า?มา TOS จะเป็น1; เนื่องจากเป็นค่าบวก IP จะเลี้ยวขวาโดยใช้เส้นทางสีเหลือง ผู้ประกอบการรายแรกที่พบคือSผลักดันพิเศษ32; ;ปรากฏมันก่อนที่มันจะก่อให้เกิดปัญหาใด ๆ

ตอนนี้ IP กลับมาที่ลูกศรและดำเนินการตามปกติ~เปลี่ยน TOS เป็น-2และOพิมพ์ เนื่องจาก TOS เป็นลบอีกครั้ง IP ใช้เส้นทางสีเขียวอีกครั้ง และมันก็ช่วยให้การขี่จักรยานเป็นเช่นนี้ตลอดไป *: สีแดง, สีเขียว, สีแดง, สีเหลือง, สีแดง, สีเขียว, สีแดง, สีเหลือง, ... การพิมพ์ในรอบต่อไปนี้:

0 -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -7 7 -8 8 -9 9 -10 10 ...

TL; DR

โปรแกรมนี้ซ้ำ ๆ ผ่าน 3 ขั้นตอนง่าย ๆ เหล่านี้:

  1. ส่งออกจำนวนปัจจุบันและช่องว่าง
  2. หากจำนวนปัจจุบันเป็นลบให้ลดลง 1
  3. ใช้จำนวนบิตไม่ใช่จำนวนปัจจุบัน

รุ่นไม่แยก 6 ไบต์

nO?~>~

การลบการแยกช่วยให้โปรแกรมง่ายขึ้นมากจนสามารถใส่ลงในหน่วย cube ได้:

  n
O ? ~ >
  ~

* หมายเหตุ : ไม่มีโปรแกรมใดไม่มีที่สิ้นสุดอย่างแท้จริงเนื่องจากมีเพียง 2 52 เท่านั้น (โดยที่ JavaScript เริ่มสูญเสียความแม่นยำของจำนวนเต็ม)


4
แผนภาพที่ดี! :) คุณสร้างมันขึ้นมาด้วยมือหรือเขียนเครื่องมือเพื่อสร้างมันขึ้นมา?
Martin Ender

5
@ มาร์ตินขอบคุณ! มันได้รับแรงบันดาลใจจากไดอะแกรม Hexagony ของคุณ ฉันสร้างมันขึ้นมาด้วยมือ แม้ว่าฉันต้องการเขียนเครื่องมือสำหรับสร้างพวกเขาเมื่อฉันมีเวลาเพียงพอที่จะทำเช่นนั้น
ETHproductions

18

MATL , 8 ไบต์

0`@_@XDT

นี้ใช้ชนิดข้อมูลเริ่มต้น MATL ซึ่งเป็นdoubleจึงทำงานได้ถึง2^53ในค่าสัมบูรณ์ ผลลัพธ์คือ

0
-1
1
-2
2
···

ลองออนไลน์!

คำอธิบาย

0            % Push 0
  `     T    % Do...while true: infinite loop
   @_        % Push iteration index and negate
     @       % Push iteration index
      XD     % Display the whole stack

เหตุใดจึงมีความล่าช้ามากก่อนที่จะเริ่มการพิมพ์
ทำให้เสียชีวิต

@ สรุปฉันคิดว่า Octave จำเป็นต้องเริ่มใหม่ทุกครั้งที่คุณเรียกใช้โปรแกรม MATL ใน TIO และต้องใช้เวลาพอสมควร
ข้อบกพร่อง

@ ทำให้ฉันไม่แน่ใจ มันเกิดขึ้นในคอมไพเลอร์ออนไลน์ไม่ใช่ออฟไลน์ ฉันคิดว่าอาจต้องทำอย่างไรกับ Octave การเพจเอาต์พุต แต่ตอนนี้ฉันไม่แน่ใจว่าเป็นเหตุผลหรือไม่
Luis Mendo

1
ความคิดที่ชาญฉลาดที่จะทำ@_@XDมากกว่า@_D@Dเพื่อให้คุณสามารถรวม 0 ในการทำงานครั้งแรก
Sanchises

3
XD+1 สำหรับยิ้ม
TuxCrafting

16

ภาษาการเขียนโปรแกรมของเช็คสเปียร์ , 227 ไบต์

.
Ajax,.
Puck,.
Act I:
Scene I:
[Enter Ajax,Puck]
Puck:You ox!
Ajax:Be me without myself.Open thy heart.
Scene II:      
Ajax:Be thyself and ash.Open thy heart.Be me times you.Open thy heart.Be me times you.Let us return to scene II.

เห็นได้ชัดว่าคำตอบนี้ไม่มีที่ไหนใกล้ชนะ แต่ฉันชอบที่นี่เป็นกรณีการใช้งานที่ SPL นั้นเหมาะกับ

อธิบาย:

// Everything before the first dot is the play's title, the parser treats it as a comment.
.

// Dramatis personae. Must be characters from Shakespeare's plays, again with a comment.
Ajax,.
Puck,.

// Acts and scenes serve as labels. Like the whole play, they can have titles too,
// but for the sake of golfing I didn't give them any.
Act I:

// This scene would've been named "You are nothing"
Scene I:

// Characters can talk to each other when on stage
[Enter Ajax,Puck]

// Characters can assign each other values by talking. Nice nouns = 1, ugly nouns = -1.
Puck: You ox!                 // Assignment: $ajax = -1;
Ajax: Be me without myself.   // Arithmetic: $puck = $ajax - $ajax;
      Open thy heart.         // Standard output in numerical form: echo $puck;

// Working title "The circle of life"
Scene II:

// Poor Ajax always doing all the work for us
Ajax: Be thyself and ash.          // $puck = $puck + (-1);
      Open thy heart.              // echo $puck;
      Be me times you.             // $puck *= $ajax;  (remember $ajax==-1 from scene I)
      Open thy heart.              // echo $puck;
      Be me times you.             // negate again
      Let us return to scene II.   // infinite goto loop

อย่างที่คุณเห็นเมื่อเปรียบเทียบรหัสนี้กับคำตอบของฉันกับความท้าทายที่เกี่ยวข้องในการนับตลอดไป (เช่นพิมพ์ตัวเลขธรรมชาติทั้งหมด) ความยาวรหัส SPL จะเพิ่มขึ้นค่อนข้างแย่เมื่อขนาดของปัญหาเพิ่มขึ้น ...


1
ฉันชอบสิ่งนี้. มันยอดเยี่ยมสำหรับการเล่นกอล์ฟ แต่ยอดเยี่ยมสำหรับการอ่าน
Swinefish

Typo ในบรรทัดสุดท้ายของคำอธิบาย ควรจะเป็นLet us return to scene II. scene I
Oliver Ni

ขอบคุณสำหรับการชี้ให้เห็นความแตกต่าง! การพิมพ์ผิดจริงในรหัสด้านบน: เราต้องไม่ทำซ้ำฉากที่ฉันเพราะมันจะรีเซ็ต$puckเป็น 0 แล้วการนับขึ้นจะไม่ทำงานอีกต่อไป ฉันเพิ่มรหัสที่หายไปIและแก้ไขความยาวไบต์ (ซึ่งออกไปนิด ๆ หน่อย ๆ แล้วโอ๊ะโอ)
Christallkeks


10

05AB1E , 9 6 ไบต์

บันทึกแล้ว 3 ไบต์ขอบคุณ Adnan

[ND,±,

ลองออนไลน์!

พิมพ์0, -1, 1, -2, 2 ...คั่นด้วยการขึ้นบรรทัดใหม่


2
ฉันก็สามารถที่จะได้รับมันลงไป 6 [N,N±,ไบต์ใช้เวทมนตร์บิตบางส่วน:
Adnan

1
@Adnan: ดี! ฉันพยายามทำสิ่งที่คล้ายกันก่อนหน้านี้ แต่ไม่ได้ใช้±และมันก็จบลงด้วยความยาวกว่า 3 ไบต์
Emigna

ฉันรู้ว่ามันใช้เวลานานแล้ว แต่D,สามารถถูกแทนที่ด้วย=เพื่อบันทึกไบต์
Kevin Cruijssen

10

GNU sed, 189 + 2 (แฟล็ก rn) = 191 ไบต์

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

s/^/0/p
:
:i;s/9(@*)$/@\1/;ti
s/8(@*)$/9\1/
s/7(@*)$/8\1/
s/6(@*)$/7\1/
s/5(@*)$/6\1/
s/4(@*)$/5\1/
s/3(@*)$/4\1/
s/2(@*)$/3\1/
s/1(@*)$/2\1/
s/0(@*)$/1\1/
s/^@+/1&/;y/@/0/
s/^/-/p;s/-//p
t

วิ่ง:

echo | sed -rnf all_integers.sed

เอาท์พุท:

0
-1
1
-2
2
-3
3
etc.

10

Brainfuck, 127 ไบต์

+[-->+>+[<]>-]>-->+[[.<<<]>>-.>>+<[[-]>[->+<]++++++++[-<++++++>>-<]>--[++++++++++>->-<<[-<+<+>>]]>+>+<]<<<[.<<<]>>.+.>[>>>]<<<]

ลองออนไลน์!

รับเทปไม่มีที่สิ้นสุดในทางทฤษฎีจะทำงานตลอดไป

0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7,8,-8,9,-9,10,-10,11,-11,12,-12,13,-13,14,-14,15,-15,16,-16,17,-17,18,-18,19,-19,20,-20,21,-21,22,-22,23,-23,24,-24,25,-25,26,-26,27,-27,28,-28,29,-29,30,-30,31,-31,32,-32,33,-33,34,-34,35,-35,36,-36,37,-37,38,-38,39,-39,40,-40,41,-41,42,-42,43,-43,44,-44,45,-45,46,-46,47,-47,48,-48,49,-49,50,-50,51,-51,52,-52,53,-53,54,-54,55,-55,56,-56,57,-57,58,-58,59,-59,60,-60,61,-61,62,-62,63,-63,64,-64,65,-65,66,-66,67,-67,68,-68,69,-69,70,-70,71,-71,72,-72,73,-73,74,-74,75,-75,76,-76,77,-77,78,-78,79,-79,80,-80,81,-81,82,-82,83,-83,84,-84,85,-85,86,-86,87,-87,88,-88,89,-89,90,-90,91,-91,92,-92,93,-93,94,-94,95,-95,96,-96,97,-97,98,-98,99,-99,...

ยังไม่ย่อ

+[-->+>+[<]>-]>-->+
[
  [.<<<]>>-.>>+<
  [[-]>[->+<]
    ++++++++[-<++++++>>-<]>--
    [++++++++++>->-<<[-<+<+>>]]>+>+<
  ]<<<
  [.<<<]>>.+.>
  [>>>]<<<
]

9

ShadyAsFuckขนาด 3 ไบต์

FVd

คำอธิบาย:

F     prints the current cell value (0) and increases it by 1
 V    starts a loop and prints the current value
  d   increases the current value and ends the loop

สิ่งนี้ใช้ประโยชน์จากการห่อเซลล์และพิมพ์ค่าที่เป็นไปได้ทั้งหมด ใน SAF, การแสดงพื้นเมืองจำนวนเต็มโดยค่าไบต์


5
คำตอบนี้คือ ... ร่มรื่น
Conor O'Brien

1
ฉันสงสัยว่าใครมากับชื่อภาษาจากนั้นฉันก็สังเกตเห็นว่ามันเป็นภาษาอะไร
John Dvorak

8

R, 25 24 ไบต์

นำไปเล่นหนึ่งไบต์ด้วย @JDL

repeat cat(-F,F<-F+1,'')

ลองออนไลน์!

ตัวอย่างผลลัพธ์:

0 1 -1 2 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 

2
คุณสามารถแทนที่while(1)ด้วยrepeat เพื่อประหยัดถ่าน
JDL

@JDL ขอบคุณ! ฉันลืมว่าโครงสร้างบางครั้งมีอยู่
rturnbull

7

แบตช์ 56 ไบต์

@set n=0
:l
@echo %n%
@set/an+=1
@echo -%n%
@goto l

เอาท์พุท:

0
-1
1
-2
2
-3

ฯลฯ ใช้งานได้ถึง 2147483647; 58 ไบต์ถ้าคุณต้องการ (-) 2147483648 ในผลลัพธ์:

@set n=0
:l
@echo %n:-=%
@set/an-=1
@echo %n%
@goto l

44 ไบต์หากพิมพ์จำนวนเต็มบวกที่รองรับทั้งหมดดังนั้นจำนวนเต็มลบทั้งหมดที่รองรับจากนั้นทำซ้ำไม่สิ้นสุดเป็นที่ยอมรับ:

@set n=0
:l
@echo %n%
@set/an+=1
@goto l

7

Java 7, 151 134 122 118 ไบต์

import java.math.*;void c(){for(BigInteger i=BigInteger.ONE,y=i;;i=i.add(y))System.out.println(y.subtract(i)+"\n"+i);}

บันทึก 12 ไบต์ด้วย@flawr (และ@xnorทางอ้อม)

หลังจากการเปลี่ยนแปลงกฎ .. ( 59 56 63 ไบต์)

void c(){for(int i=0;i>1<<31;)System.out.println(~--i+"\n"+i);}

เนื่องจากใน Java 2147483647 + 1 = -2147483648เราไม่สามารถทำi++และดำเนินการต่อไปได้อย่างไม่สิ้นสุดเนื่องจากความท้าทายคือการพิมพ์ตัวเลขทั้งหมดครั้งเดียว ด้วยรหัสข้างต้นด้วยช่วงเพิ่มก็จะพิมพ์แทนจำนวนเต็มทั้งหมดจากการ-2147483648ไปแต่ละครั้งในลำดับต่อไปนี้:2147483647 0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648ขอขอบคุณที่@ OlivierGrégoireสำหรับการชี้ให้เห็นพฤติกรรมของ Java เกี่ยวกับ/MIN_VALUE-1 ลองที่นี่MAX_VALUE+1

Ungolfed & รหัสการทดสอบ:

ลองที่นี่ - ส่งผลให้เกิดข้อผิดพลาดรันไทม์

import java.math.*;
class M{
  static void c() {
    for(BigInteger i = BigInteger.ONE, y = i; ; i = i.add(y)){
      System.out.println(y.subtract(i) + "\n" + i);
    }
  }

  public static void main(String[] a){
    c();
  }
}

เอาท์พุท:

0
1
-1
2
-2
3
-3
4
-4
5
-5
...

1
ฉันคิดว่าคุณสามารถบันทึกไบต์ได้ด้วยการพิมพ์ n และ 1-n ในเวลาเดียวกันด้วยวิธีนี้คุณสามารถลบการคอมไพล์ได้ @xnorเป็นคนแรกที่ใช้ความคิดนี้ที่นี่
ข้อบกพร่อง

1
intโปรแกรม -version ของคุณซึ่งกำหนดเวลาไม่สิ้นสุดจะพิมพ์จำนวนเต็มทุกจำนวนเป็นระยะเวลาไม่ จำกัด
Olivier Grégoire

1
@ OlivierGrégoireอ่าแน่นอน MAX_VALUE + 1 คือ MIN_VALUE .. ถอนหายใจ ฉันแก้ไขมันแล้วขอบคุณที่ชี้ให้เห็น
Kevin Cruijssen

1
หากคุณต้องการเล่นกอล์ฟมากขึ้น (เช่นการกำจัดMAX_VALUEคุณสามารถตรวจสอบคำตอบของฉัน (อาจยังอยู่ในหน้าสุดท้าย)
Olivier Grégoire

1
โซลูชัน 53 ไบต์ของคุณเป็นตัวอย่างไม่ใช่ฟังก์ชันหรือโปรแกรมและดังนั้นจึงไม่ถูกต้อง
Mego

6

DC (รส GNU หรือ OpenBSD) - 16 ไบต์

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

เพราะrคำสั่งจะต้องGNU-DC หรือ OpenBSD-DC

0[rp1+45Pprdx]dx

ทดสอบ:

$ dc -e '0[rp1+45Pprdx]dx' | head
0
-1
1
-2
2
-3
3
-4
4
-5

DC - 16 ไบต์

ค่าเฉลี่ยนิดหน่อยตอนนี้ ;-)

รุ่นนี้ใช้ความยาวสแต็กเป็นตัวนับในขณะที่ปล่อยให้สแต็กโต

z[pz45Ppllx]dslx

ทดสอบ:

$ dc -e 'z[pz45Ppllx]dslx' | head
0
-1
1
-2
2
-3
3
-4
4
-5

DC - 17 ไบต์

ไม่มีลูกเล่นสกปรก

0[p1+45Ppllx]dslx

ทดสอบ:

$ dc -e '0[p1+45Ppllx]dslx' | head
0
-1
1
-2
2
-3
3
-4
4
-5

+? สำหรับ "ไม่ช้าก็เร็ว ... เร็วกว่าที่คุณคาดหวัง"
Greg Martin

2
แทนการทำ[-]P "GNU-Dc หรือ OpenBSD-Dc" - มีรุ่นอื่นที่พบโดยทั่วไปในป่าหรือไม่? 45P
Digital Trauma

1
ฉันมีวิธีแก้ไขปัญหาอื่น (หรือสองสามข้อ) แต่พวกเขาเกี่ยวข้องกับจำนวนลบจริง ฉันขอโพสต์พวกเขาด้วยคำตอบใหม่ได้ไหม? ฉันถามเพราะพวกเขาดูคล้ายกันมากเพราะdcมีผู้ให้บริการเพียงไม่กี่คน ฉันพัฒนาพวกมันอย่างอิสระจากสิ่งเหล่านี้
Joe

@DigitalTrauma ... แน่ใจ ... Dc ดั้งเดิมไม่มี / ไม่มีr"swap" บางครั้งฉันก็สับสนเมื่อมองดูเวอร์ชั่นที่ไม่เหมาะสม อาจไม่มีใครต้องการรหัสในDc โบราณอีกต่อไป (และrจะมีการล้างสแต็ค) บางทีฉันอาจเปลี่ยน "Dc" เป็น "AT&T dc"? ... และขอบคุณสำหรับ45Pคำใบ้ ...
Yeti

2
@ yeti ฉันเพิ่งใส่ "dc" ในคำตอบของฉัน ฉันไม่คิดว่าคนที่นี่จะเป็นกังวลเกินไปโดยเฉพาะอย่างยิ่งเมื่อได้รับความแพร่หลายของรสชาติ "ทันสมัย" dc
บาดเจ็บทางดิจิทัล

6

C # 74 ไบต์

class P{void Main(){for(var x=0m;;System.Console.Write(x+++","+-x+","));}}

class P
{
    void Main()
    {
        for(var x = 0m; ; System.Console.Write(x++ + "," + -x + ","));
    }
}

เอาท์พุท:

0,-1,1,-2,2,-3,3,-4,4,-5,5,-6,6,-7,7,-8,8,-9,9,-10,10,...

ลองมัน:

dotnetfiddle.net (จำกัด ไม่เกิน 1,000 รายการ)


ตัวอย่างเหล่านี้ไม่ใช่ฟังก์ชั่น / โปรแกรมเต็มรูปแบบใช่หรือไม่
pinkfloydx33

ขออภัยเพิ่มโปรแกรมแบบเต็ม
alex

2
คุณสามารถละเว้นpublicตัวดัดแปลงและบันทึก 14 ไบต์ ค่าเริ่มต้นจะทำอย่างเท่าเทียมกัน
Alejandro

@Alejandro ขอบคุณมันเป็นเรื่องแรกของฉัน :)
อเล็กซ์

6

Ruby, 26 22 19 16 ไบต์

พิมพ์ตัวเลขคั่นด้วยการขึ้นบรรทัดใหม่ -3 ไบต์จาก @manatwork -3 ไบต์จาก @ m-chrzan

0.step{|n|p~n,n}

คุณกำลังส่งออกค่าตัวเลขที่นี่ดังนั้นpจะทำเช่นนั้น
จัดการ

0.step{|n|p n,~n}สำหรับ 17 ไบต์
m-chrzan

1
@ m-chrzan เพราะคำสั่งซื้อไม่สำคัญเท่าไหร่ฉันสามารถโกนไบต์พิเศษได้นอกเหนือจากคำแนะนำของคุณ!
หมึกมูลค่า

6

JavaScript, 29 26 ไบต์

รุ่นที่ไม่มีที่สิ้นสุด 26 ไบต์

บันทึกแล้ว 3 ไบต์ด้วย ETHproductions

for(n=1;;)alert([1-n,n++])

จะแสดงจำนวนเต็มทั้งหมดระหว่าง -9007199254740991 ถึง 9007199254740992

รุ่นที่ไม่มีที่สิ้นสุด (ES6), 114 112 ไบต์

บันทึก 2 ไบต์ด้วย ETHproductions

for(n=[-1];1;alert(n[a||n.unshift(1),0]?(x=n.join``)+' -'+x:0))for(i=n.length,a=0;i--;a=(n[i]+=1-a)>9?n[i]=0:1);

จะแสดงจำนวนเต็มทั้งหมดเวลาที่กำหนดและหน่วยความจำ


คุณสามารถวางฟังก์ชั่นสำเร็จรูปและเรียกมันว่าโปรแกรมเต็มรูปแบบ
Conor O'Brien

@ ConorO'Brien - โอ้คุณพูดถูก ขอบคุณ :)
Arnauld

n[a,b,c]ผลตอบแทนเพื่อให้คุณสามารถวางวงเล็บในn[c] n[(a||n.unshift(1),0)]
ETHproductions

คุณไม่จำเป็นต้องใช้1ทั้งในวง for(;;)ทำงานตลอดไป for(n=1;;)alert([1-n,n++])คุณสามารถบันทึกไบต์ที่สองมากขึ้นด้วย นอกจากนี้สิ่งนี้จะไม่ใช้ฟีเจอร์ ES6 ใด ๆ อีกแล้ว ;-)
ETHproductions

5

> <> , 19 15 ไบต์

1::1$-naonao1+!

สิ่งนี้จะพิมพ์สิ่งต่อไปนี้:

0
1
-1
2
-2
3
-3

... และต่อไป ตัวคั่นเป็นบรรทัดใหม่

เขียนใหม่หลังจากอ่านคำตอบของ @ xnor เพื่อใช้เวอร์ชันของอัลกอริทึมนั้น เริ่มต้นที่n=1พิมพ์โปรแกรม1-nและแต่ละคนตามมาด้วยการขึ้นบรรทัดใหม่ก่อนที่เพิ่มขึ้นn หลังจากที่ล้นค่าสูงสุดโปรแกรมจะจบลงด้วยข้อผิดพลาดของn something smells fishy...เมื่อสิ่งนี้จะเกิดขึ้นขึ้นอยู่กับการใช้งานล่าม


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

0:nao0$-:10{0(?$~+!

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


xnor เป็น "เขา" อย่างชัดเจนหรือไม่? หรืออคติที่หมดสติของเรากำลังแสดง ...
Greg Martin

2
@GregMartin มันน่าสนใจฉันไม่คิดว่าฉันเคยพูดถึงเพศ
xnor

5

ยูทิลิตี Bash + GNU, 26

seq NaN|sed '1i0
p;s/^/-/'

ฉันไม่เคยเห็น seq ใช้วิธีนี้เป็นข้อผิดพลาดหรือไม่? นอกจากนี้มันจะเริ่มต้นทำซ้ำตัวเลขหลังจากการล้นประเภทหรือไม่ ฉันรู้ว่า$[++i]มันทำเช่นนั้นด้วยการทุบตี
seshoumara

ดูเหมือนว่าคุณลักษณะใหม่ - ดูรหัสที่มา การเพิ่ม 1 ใน NaN ไม่ควรทำให้เกิดการพันกัน
Digital Trauma

ฉันออกseq NaNไปทำงานและหลังจาก 999999 การพิมพ์เสร็จสิ้นในรูปแบบทางวิทยาศาสตร์ด้วยความแม่นยำ 5 หลัก ในส่วนที่เกี่ยวกับความท้าทายค่านั้นจะเป็นจำนวนเต็มที่ใหญ่ที่สุดที่คุณพิมพ์ซึ่งใช้ได้เนื่องจากส่วนที่เหลือจะไม่ซ้ำหมายเลขก่อนหน้า ยังสังเกตเห็นว่าคุณสามารถรัน seq ด้วยinfตัวพิมพ์เล็กและตัวพิมพ์nanเล็กได้ +1
seshoumara

5

bc, 17 16 ไบต์

แก้ไข: 1 ไบต์ขอบคุณน้อยที่จะดิจิตอลบาดเจ็บ

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

for(;;){i;-++i}

ในการทำซ้ำครั้งแรกiไม่ได้กำหนด แต่การพิมพ์มันให้ 0 กับความประหลาดใจของฉัน


สั้นลง 1 ไบต์:for(;;){i;-++i}
Digital Trauma

@DigitalTrauma ขอบคุณฉันปรับปรุงคำตอบของฉัน สิ่งที่ตลกคือฉันใช้ลูปนั้นสร้างวันนี้ในคำตอบทุบตีอื่น ๆ ของฉันแต่ลืมไปbcเช่นกัน
seshoumara

หรือfor(;;){i++;-i}(ความยาวเท่ากัน)
sch

5

เขาวงกต 9 ไบต์

!`
\:"
 (

ลองออนไลน์!

สิ่งนี้ใช้งานได้และมีความสำคัญเหมือนกัน:

 "
`:(
\!

คำอธิบาย

ลำดับการควบคุมในรหัสนี้ค่อนข้างตลก โปรดจำไว้ว่าตัวชี้คำสั่ง (IP) ในโปรแกรมเขาวงกตตามเส้นทางของอักขระที่ไม่เว้นวรรคและตรวจสอบด้านบนของสแต็คที่ทางแยกใด ๆ เพื่อตัดสินใจว่าจะใช้พา ธ ใด:

  • หากด้านบนของสแต็คเป็นบวกให้เลี้ยวขวา
  • หากส่วนบนสุดของสแต็คเป็นศูนย์ให้เคลื่อนที่ไปข้างหน้าต่อไป
  • หากด้านบนสุดของสแต็กเป็นลบให้เลี้ยวซ้าย

เมื่อ IP พบจุดสิ้นสุดมันจะหมุนไปรอบ ๆ (ดำเนินการคำสั่งที่จุดสิ้นสุดเพียงครั้งเดียว) และ IP เริ่มต้นที่มุมซ้ายบนซึ่งเคลื่อนไปทางตะวันออก นอกจากนี้โปรดทราบว่าสแต็กนั้นเต็มไปด้วยจำนวนศูนย์ที่เริ่มต้นด้วยอนันต์

โปรแกรมเริ่มต้นด้วยบิตสั้น ๆ นี้:

!    Print top of stack (0).
`    Multiply by -1 (still 0).
:    Duplicate.

ตอนนี้ IP เป็นชุมทางที่เกี่ยวข้องและย้ายตรงไปข้างหน้าบน(ซึ่ง decrements -1ด้านบนของสแต็คที่จะ IP พบจุดจบและหมุนไปรอบ ๆ :ทำซ้ำส่วนบนสุดของสแต็กอีกครั้ง ตอนนี้ด้านบนของสแต็คเป็นลบและ IP เลี้ยวซ้าย (ตะวันตก) ตอนนี้เราทำการวนซ้ำอีกครั้งของลูปหลัก:

\   Print linefeed.
!   Print top of stack (-1).
`   Multiply by -1 (1).
:   Duplicate.

เวลานี้ด้านบนของสแต็คเป็นบวกดังนั้น IP เลี้ยวขวา (ตะวันตก) 1และดำเนินการโดยทันทีทวนของวงหลักอื่นซึ่งพิมพ์ จากนั้นเมื่อถูกทำให้เป็นโมฆะอีกครั้งเราจะตี:ด้วย-1ในกอง

เวลานี้ IP เลี้ยวซ้าย (ตะวันออก) นี่"เป็นเพียงแค่ไม่มีการหมุนและ IP หมุนไปรอบ ๆ ในทางตัน :สร้างสำเนาอีกครั้งและครั้งนี้ IP เปลี่ยนเป็นทิศใต้ (ลดค่าลง-2เป็น IP หันกลับมาอีกครั้ง เมื่อด้านบนของสแต็กยังคงเป็นค่าลบตอนนี้ IP จะหันไปทางทิศตะวันตกบน:และทำการวนซ้ำครั้งถัดไปของลูปหลัก

ด้วยวิธีนี้ IP จะวนซ้ำระหว่างการวนซ้ำแบบวนรอบแน่นพิมพ์ตัวเลขที่เป็นบวกและวนซ้ำที่ผ่านปลายทั้งสองด้านเพื่อลดค่าก่อนที่จะพิมพ์จำนวนลบ

คุณอาจถามตัวเองว่าทำไมถึงมี"บรรทัดที่สองหากมันไม่ได้ทำอะไรเลยถ้าไม่มีมันเมื่อ IP ถึง:ค่าลบมันไม่สามารถเลี้ยวซ้าย (ตะวันออก) ดังนั้นมันจะเลี้ยวขวา (ตะวันตก) แทน (ตามกฎทั่วไปหากไม่มีทิศทางปกติที่จุดแยก IP จะใช้ทิศทางตรงกันข้าม) นั่นหมายความว่า IP จะไม่ถึง(จุดต่ำสุดและเราไม่สามารถแยกแยะบวกจากการทำซ้ำเชิงลบ


นี่คือสิ่งที่ฉันคิดขึ้นมาก่อนที่จะเห็นคำตอบของคุณ: pastebin.com/VHzAvABe
Robert Hickman

5

JavaScript (ES5), 32 31 30 29 ไบต์

for(i=0;;)[i++,-i].map(alert)

พิมพ์ 0 -1 1 -2 2 -3 3 -4 4 -5 5 ...

บันทึก 1 ไบต์ต้องขอบคุณ Patrick Roberts! บันทึก 2 ไบต์ต้องขอบคุณ Conor O'Brien!


1
แล้วจะ[i++,-i].map(alert)เป็นalert(i++),alert(-i)อย่างไร
Conor O'Brien

for(;;)คือหนึ่งไบต์ที่สั้นกว่าwhile(1)
Patrick Roberts

@ ConorO'Brien mapคือ ES6
Paul Schmitz


คุณสามารถย้ายi=0;บิตภายในสำหรับลูปเพื่อบันทึกไบต์
Conor O'Brien

4

Java, 65 54 ไบต์

i->{for(;;)System.out.print(i+++" "+(-i<i?-i+" ":""));

รหัสทดสอบ Ungolfed

public static void main(String[] args) {
    Consumer<Integer> r = i -> {
        for (;;) {
            System.out.print(i++ + " " + (-i < i ? -i + " " : ""));
        }
    };

    r.accept(0);
}

3
biggest magnitude of the standard integer type of your language intเป็นประเภทจำนวนเต็มมาตรฐานของ Java
Shaun Wild

1
ขออภัยเกี่ยวกับที่ความต้องการที่มีการเปลี่ยนแปลงในระหว่าง ...
flawr

2
คุณสามารถตีกอล์ฟถึง()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};( 53 bytes )
Kevin Cruijssen

@KevinCruijssen นั่นทำให้พื้นที่ห่างไกล ...
Shaun Wild

1
ให้เวลาอนันต์มันจะพิมพ์จำนวนเต็มทุกจำนวนอนันต์แต่ละครั้ง
Olivier Grégoire

4

C #, 83 ไบต์

void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}

Ungolfed:

void f()
{
  for (decimal n=0;;n++)
  {
    Console.Write(n + ",");
    if (n > 0) Console.Write(-n + ",");
   }
}

ขาออก:

0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6.......

มีบางสิ่งที่สามารถทำได้เพื่อลดอักขระ ก่อนอื่นคุณโปรแกรมไม่จำเป็นต้องมีเนมสเปซ ประการที่สองชื่อคลาสไม่จำเป็นต้องยาวมาก นอกจากนี้คุณทำการโทรสองครั้งเพื่อ console.writeline ซึ่งสามารถทำให้ผู้รับมอบสิทธิ์ง่ายขึ้น ในขณะที่ความจริงสามารถลดความซับซ้อนเป็น aa สำหรับ (;;) และคำสั่ง if สามารถลบออกได้ด้วยการส่งออกค่าศูนย์ก่อนผ่านตัวแทน
นิโก้

ขอบคุณ ฉันไม่รู้ว่าผู้แทนอาจจะ "โกง" หรือไม่?
Pete Arden

สวัสดียินดีต้อนรับสู่ PPCG! ฉันคิดว่าคุณอาจพบที่น่าสนใจนี้อ่าน: เคล็ดลับสำหรับการเล่นกอล์ฟใน C # นอกจากนี้คุณไม่จำเป็นต้องใช้โปรแกรมเต็มรูปแบบเพียงฟังก์ชั่นจะทำ (เว้นแต่ความท้าทายจะระบุไว้เป็นอย่างอื่น) ดังนั้นvoid f(){code_present_in_main}ก็เพียงพอแล้วสำหรับการนับไบต์ สำหรับโค้ดนั้นคุณสามารถเล่นกอล์ฟแบบนี้ได้มากขึ้น: void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}( 61 bytes )
Kevin Cruijssen

1
โอ้เยี่ยมมากมันมีสุขภาพดีกว่า 85 ในตอนนี้ขอบคุณ! ฉันไม่รู้สึกถูกต้องกับการใช้คำตอบของคุณทั้งหมด แต่เป็นการปรับปรุงและเคล็ดลับเหล่านั้นจะช่วยให้การเล่นกอล์ฟในอนาคตของฉัน!
Pete Arden

@PeteArden ฉันเข้าใจว่าไม่ได้ใช้รหัสของฉันเพราะเป็นแนวทางที่แตกต่าง อืมคุณยังสามารถเล่นกอล์ฟได้ 2 ไบต์ในคำตอบของคุณเองโดยการวางdecimal n=0และn++;ข้างในวงวนวน: void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}:)
เควิน Cruijssen

4

C # 86 66 ไบต์

คำตอบใหม่:

void b(){for(var i=0;;i++)Console.Write(i==0?","+i:","+i+",-"+i);}

ชัดเจน:

void b() 
{
    for(var i=0;;i++)
        Console.Write(i == 0 ? "," + i : "," + i + ",-" + i);
}

คำตอบเก่า (86 ไบต์):

void a(){Console.Write(String.Join(",",Enumerable.Range(int.MinValue,int.MaxValue)));}

Ungolfed:

void a()
{
    Console.Write(String.Join(",", Enumerable.Range(int.MinValue, int.MaxValue)));
}

1
มีช่องว่างไร้ประโยชน์ 2 ช่อง หนึ่งก่อนและหนึ่งก่อนEnumerable.Range int.MaxValue
Yytsi

1
ยินดีต้อนรับสู่ PPCG! +1 คุณอาจพบที่น่าสนใจนี้อ่าน: เคล็ดลับสำหรับการเล่นกอล์ฟใน C # ในคำตอบปัจจุบันของคุณวงเล็บสำหรับ for-loop สามารถลบออกได้เนื่องจากมีเพียงหนึ่งบรรทัดภายใน หรืออีกวิธีนี้เป็นวิธีที่สั้น: void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}( 57 ไบต์ )
Kevin Cruijssen

@KevinCruijssen ขอบคุณ วงเล็บหายไป
Daniel Lerps


4

Powershell, 20 19 18 ไบต์

ปรับปรุงโดยขโมยอย่างไร้ยางอายจากคำตอบของ TimmyD

0;for(){-++$i;$i}

เอาท์พุท:

0
-1
1
-2
2
-3
3
-4
4

เวอร์ชั่นเก่า:

for(){-$i;$i++;$i}

ไม่แน่ใจว่าทำไม tbh แต่ - ตัวแปรที่ไม่ได้ประกาศ (หรือ - $ null) มีค่าเป็น 0 ซึ่งบันทึกเรา 2 ไบต์ในรุ่นนี้ ...


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


4

Brachylogขนาด 2 ไบต์

ẉ⊥

ลองออนไลน์!

ẉ     Print with a newline
      the input,
 ⊥    then try again.

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

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