ลำดับเลขคณิตของ Crazy บรรณารักษ์


18

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

ทุกคนคุ้นเคยกับลำดับหมายเลขธรรมชาติในฐาน 10 ที่เรียกว่าN :

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

จากนั้นเราสามารถสร้างลำดับหมายเลขเฉพาะได้เรียกมันว่าPว่าองค์ประกอบทุกตัวในPมีตัวหารสองตัวในNคือ1ตัวของมันเอง ลำดับนี้คือ:

2, 3, 5, 7, 11, 13, ...

ตกลงกิจวัตรที่น่ารักจนถึงตอนนี้

บรรณารักษ์คิดว่าฟังก์ชั่นที่ดีF (x, y)ที่ใช้ตัวเลขxจากNโดยมีเงื่อนไข0 <= x <= 9และตัวเลขyจากNและแทรกxลงในyการขยายทศนิยมในทุกตำแหน่ง (เช่นการเตรียมการแทรกหรือผนวกxเข้าy) จากนั้นส่งคืนชุดที่เรียงลำดับของหมายเลขใหม่
ตัวอย่างเช่นF (6, 127)จะส่งผลให้

1267, 1276, 1627, 6127

ที่ยังคงน่าเบื่ออยู่ดี บรรณารักษ์ต้องการเพิ่มรสชาติให้มากขึ้นโดยการระบุฟังก์ชั่นใหม่แทนที่จะz -> {p : p in P and F(z,p) subset of P}เรียงจากน้อยไปมาก
ตัวอย่างเช่นz (7)จะเป็น

3, 19, 97, 433, 487, 541, ...

เพราะ37และ73เป็นทั้งนายก719 179และ197เป็นนายกทั้งหมดเป็นต้น

โปรดทราบว่าz (2)ว่างเปล่าเนื่องจากไม่มีไพรม์ที่มีการ2ต่อท้ายจะยังคงเป็นไพรม์ ในทำนองเดียวกันสำหรับ {0,4,5,6,8}

งานของคุณคือการเขียนโค้ดที่จะสร้างและส่งออกหมายเลข 100 เป็นครั้งแรกในลำดับZ (x)สำหรับที่กำหนดx

อินพุต

จำนวนเต็มเดียวx0 <= x <= 9ดังกล่าวว่า อินพุตสามารถผ่านฟังก์ชันอาร์กิวเมนต์ STDIN หรือเทียบเท่า

เอาท์พุต

ลำดับของตัวเลข 100 ตัวแรกซึ่งคั่นด้วยการเลือกของคุณไปที่ STDOUT หรือเทียบเท่าเช่นลำดับที่ตรงตามz (x)ตามที่อธิบายไว้ข้างต้น หากz (x)ว่างเปล่าเป็นกรณีของ {0,2,4,5,6,8} คำEmpty Setควรจะถูกส่งออกแทน

ข้อ จำกัด

  • นี่คือรหัส - กอล์ฟเนื่องจากคุณจะต้องคัดลอกสิ่งนี้ไปยังบัตรดัชนีเพื่อให้บรรณารักษ์สามารถแสดงครูคณิตศาสตร์และมือของคุณเป็นตะคริวได้ง่าย
  • มีข้อ จำกัด ช่องโหว่มาตรฐาน บรรณารักษ์ไม่ยอมให้คนขี้โกง

ลำดับการอ้างอิง

x = 1: A069246
x = 3: A215419
x = 7: A215420
x = 9: A215421

ที่เกี่ยวข้อง: ค้นหา Prime Prime ที่บอบบางที่สุด / ค้นหา Prime ที่เล็กที่สุดจากซับสตริง / Find Prime ที่ใหญ่ที่สุดซึ่งยังคงเป็นไพรม์หลังจากการลบตัวเลข

คำตอบ:


5

Pyth, 49 ไบต์

เช่นเดียวกับ Python3 และคำตอบ Pyth อื่น ๆ รันไทม์สำหรับการค้นหา 100 หมายเลขเป็นสิ่งต้องห้าม (ชุดทดสอบให้ 10)

?}z"1379".f&!tPZ!|FmtPvjzc`Z]dhl`Z*TT3"Empty Set"

ลองออนไลน์


1
การลาก"นั้นไม่จำเป็น แต่เป็นการทำงานที่ดีมาก
FryAmTheEggman

ขอบคุณสำหรับการเตือน เนื่องจาก EOL ไม่ได้ยุติสตริงอีกต่อไปฉันจึงหลีกเลี่ยงสตริงที่ไม่ได้ถูกทำลาย แต่แน่นอน EOF ยังคงใช้งานได้
Brian Tuck

4

Python 3, 188 ไบต์

x=input()
k=1
i=100
if x in"024568":i=print("Empty Set")
while i:k+=1;s=str(k);i-=all(sum(p%d<1for d in range(2,p))<4for p in[k*int(s[:j]+x+s[j:])for j in range(len(s)+1)])and not print(k)

ไม่ดีนักกอล์ฟ แต่ตอนนี้มีบางอย่าง แทนที่จะตรวจสอบp in P and F(z,p) subset of Pเราตรวจสอบว่าp*fเป็น semiprime สำหรับแต่ละf in F(z,p)รายการ รวมเข้ากับส่วนทดลองใช้สำหรับการทดสอบแบบO(scary)ดั้งเดิมและคุณจะได้อัลกอริทึม


+1 สำหรับO(scary)
AdmBorkBork

1
เคล็ดลับดีในการตั้งค่าฉันเป็นไม่มี
lirtosiast

3

Perl, 124 ไบต์

$p=prime_iterator;y/1379//or$i=+~print'Empty Set'}while($i<100){$_=&$p;is_prime"$`@F$'"or redo while//g;$i++

ต้องใช้ตัวเลือกบรรทัดคำสั่งต่อไปนี้: -palMntheory=:allนับเป็น 16 อินพุตที่นำมาจาก stdin

ใช้โมดูลของ@DanaJMath::Prime::Utilสำหรับ perl (เต็มไปด้วย pragma ntheory) รับด้วย:

cpan install Math::Prime::Util
cpan install Math::Prime::Util::GMP

is_primeกำหนดขึ้นสำหรับค่าทั้งหมดที่น้อยกว่า2 64ซึ่งเพียงพอสำหรับวัตถุประสงค์ของเรา


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

$ echo 2|perl -palMntheory=:all oscary.pl
Empty Set

$ echo 7|perl -palMntheory=:all oscary.pl
3
19
97
433
487
541
691
757
853
1471
.
.
.
718705783
720574573
737773357
745157779
747215167
767717017
768743377
770294977
771778477
774577777

คาดว่ารันไทม์

x = 1 : 1m 09.2s
x = 3 : 0m 04.2s
x = 7 : 2m 52.5s
x = 9 : 0m 11.5s


1

Pyth, 58

L}bPb|*"Empty Set"}Qj204568T.f&yZ.Amyi++<JjZTdQ>JdThl`Z100

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

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