มันเป็นหมายเลขวงจรหรือไม่


20

หมายเลขวงโคจรคือตัวเลข "n" ซึ่งเมื่อคูณด้วย 1, 2, 3, ... n ผลลัพธ์จะเป็นตัวเลขเดียวกัน แต่เรียงตามลำดับอื่น

ตัวอย่างเช่นหมายเลข 142,857 เป็นหมายเลขวนตั้งแต่ 142,857 x 2 = 285,714, 142,857 x 3 = 428,571, 142,857 x 4 = 571,428 และอื่น ๆ กำหนดอินพุตจำนวนเต็มพิจารณาว่าเป็นตัวเลขครบวงจรหรือไม่โดยการส่งออกค่าจริงถ้าเป็นและค่าเท็จถ้าไม่

นอกจากนี้เพื่อให้ชัดเจนอินพุตสามารถมี 0 ของผู้นำ: เช่น 034482758620689655171724137931

นี่เป็นเพราะถ้าเลขศูนย์นำหน้าไม่อนุญาตให้ใช้กับตัวเลขดังนั้น 142857 จึงเป็นตัวเลขวงเดียวในรูปทศนิยม

เนื่องจากเป็น code-golf คำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!


1
สวัสดีและยินดีต้อนรับสู่ PPCG นี่ไม่ใช่คำถามที่ไม่ดี แต่ถ้าคุณดูคำถามที่โพสต์เมื่อเร็ว ๆ นี้ฉันคิดว่าคุณจะเห็นว่ามันอาจจะดีกว่า โดยเฉพาะมันจะเป็นประโยชน์มากสำหรับชุมชนถ้าคุณให้กรณีทดสอบเพิ่มเติมเพื่อทำงานกับ เมื่อโพสต์ความท้าทายในอนาคตโปรดพิจารณาใช้Sandbox
FryAmTheEggman

คำตอบ:


3

05AB1E , 9 6 ไบต์

ขอบคุณEmignaสำหรับการบันทึก 3 ไบต์!

ā*€{ïË

คำอธิบาย:

ā        # Push range(1, len(input) + 1)
 *       # Multiply by the input
  €{     # Sort each element
    ï    # Convert to int to remove leading zeros
     Ë   # Check if all elements are equal

ใช้การเข้ารหัส05AB1E ลองออนไลน์!


1
มีเหตุผล¦‚˜อะไร?
kalsowerus

1
@kalsowerus ถ้าใส่มีศูนย์นำ, คูณด้วย 1 0588235294117647จะทำให้มันหายไปซึ่งจะทำให้มันไม่ทำงาน
Adnan

2
@tfbninja โอเคกำลังเพิ่มเลขศูนย์นำหน้าหลังจากการคูณยังคำนึงถึงอะไรบ้างหรือไม่ เหล่านี้คือผลลัพธ์ที่เรียงลำดับแบบแยกส่วนที่ฉันได้รับหลังจากการคูณด้วยเลขศูนย์นำหน้าบางส่วนที่หายไปซึ่งอาจบ่งบอกถึงปัญหาได้ที่นี่
Adnan

1
พิจารณาจำนวน0212765957446808510638297872340425531914893617ตามที่กล่าวไว้ในความคิดเห็นของคำตอบอื่น ดูที่ตัวเลขที่เรียงฉันจะถือว่ามันคืนเท็จ แต่เมื่อเอาเลขศูนย์ออกมันจะกลายเป็นจริง
Emigna

2
@tfbninja เอาต์พุตสำหรับกรณีทดสอบของ Emigna คือความจริงหรือเท็จ
Adnan

4

จริงแล้ว 18 ไบต์

;;ru@≈*♂$♂S♂≈╔@S≈=

ลองออนไลน์! (คาดว่าอินพุตที่ยกมา)

คำอธิบาย:

;;ru@≈*♂$♂S♂≈╔@S≈=
;;                  duplicate input twice
  ru                range(1, len(input)+1)
    @≈              convert input to an integer
      *             multiply input by each element in range
       ♂$♂S♂≈       convert each product to a string, sort the digits, and convert back to int
             ╔      uniquify: remove duplicate elements
              @S≈   sort input and convert to int
                 =  compare equality

1
@tfbninja ฉันโพสต์สิ่งนี้ก่อนที่จะพูดเกี่ยวกับเลขศูนย์นำหน้า ฉันมีโซลูชัน 15 ไบต์อื่นที่จะทำงานกับศูนย์นำที่ฉันจะแก้ไขในไม่ช้า
Mego

1
คุณใช้การเข้ารหัสอักขระใดเพื่อให้ได้ 18 ไบต์ ฉันลอง UTF-8 และชั่งน้ำหนักที่ 32 ไบต์ แก้ไข: โอ้ฉันเข้าใจแล้วมันเป็นรหัสหน้า 437
นามแฝง

3

Python ขนาด 86 ไบต์

lambda n:all(sorted(n)==sorted(str(int(n)*i).zfill(len(n)))for i in range(2,len(n)+1))

ลองออนไลน์!

ใส่ตัวเลขเป็นสตริง


1
@tfbninja ควรจะทำงานในหลามใด ๆ (2 และ 3)
ยูเรียล

1
ทำไมถึงล้มเหลวด้วย 021276595744680851063829787234042553191489891717
J42161217

@enny_mathy ตอนนี้ก็ไม่ได้
Uriel


2

Haskell, 36 33 32 45 ไบต์

c n=let l=length n in(10^l-1)`div`read n==l+1

ตัวอย่างการใช้งาน:

*Main> c "142857"
True

ฉันไม่คิดว่าอัลกอริทึมนี้ต้องการคำอธิบายใด ๆ

TOL

ขอบคุณสำหรับคำแนะนำ: ชื่อที่แสดงทั่วไป Laikoni

ขอบคุณสำหรับการแก้ไข: Antony Hatchkins

แก้ไขไม่ได้ล้มเหลวใน "33"


1
มันใช้งานได้กับ 052631578947368421 หรือไม่
J42161217

ใช่มันจะคืนค่าเป็น True ในกรณีนั้น
นามแฝง

2
บันทึกบางไบต์ด้วยการแทนที่ ns ด้วย n
ชื่อที่ปรากฏทั่วไป

1
คุณสามารถใช้<1แทนได้==0หรือไม่? นี่คือลิงค์ของ TIO: ลองออนไลน์!
Laikoni

เกี่ยวกับ 111111
Antony Hatchkins

2

dc, 24 25 ไบต์

[1]sa0?dZd10r^1-r1+/rx=ap

พิมพ์ "0" หากหมายเลขไม่ใช่วงรอบมิฉะนั้นจะเป็น "1" ต้องการหมายเลขที่จะป้อนเป็นสตริง

ตัวอย่างการใช้งาน:

$ echo "[052631578947368421]" | dc -e '[1]sa0?dZd10r^1-r1+/rx=ap'
1
$ echo "[052631578947368422]" | dc -e '[1]sa0?dZd10r^1-r1+/rx=ap'
0

TOL

คำอธิบาย: อัลกอริทึมเช่นเดียวกับการส่ง Haskell ของฉัน

แก้ไขไม่ได้ล้มเหลวใน "33"


1

Mathematica, 81 ไบต์

Length@Union@PadLeft[Sort/@IntegerDigits[ToExpression@#*Range@StringLength@#]]<2&

ลองออนไลน์!

สตริงอินพุต

อินพุต

"010309278350515463917525773195876288659793814432989690721649484536082474226804123711340206185567"

เอาท์พุต

จริง


FromDigitsสั้นกว่าToExpression
จองฮมินมิน

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