ย้ายเฉพาะช่วงเวลาโอ้ฉัน!


15

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

ความท้าทายคือรหัสจะต้องทำงานกับการย้ายแถวและคอลัมน์

หากต้องการยกเว้นโซลูชันที่เห็นได้ชัด (สั้นที่สุด "แก้ปัญหาง่าย ๆ " ซ้ำแล้วซ้ำอีกในแนวตั้งโดยใช้ถ่านด้วยความคิดเห็น) ตัวชี้วัดนั้นแตกต่างจากรหัสปกติเล็กน้อยกอล์ฟเล็กน้อย:

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

int main()   
{            
    return 0;
}            

จะมีขนาด 4 * 13 = 52, (และเห็นได้ชัดว่ามันไม่พอดีกับเกณฑ์ใดเกณฑ์หนึ่งจากสองข้อนี้: การตรวจจับเฉพาะและ transposable)

ขนาดที่เล็กที่สุดชนะ

คุณสามารถใช้ภาษาใดก็ได้และฟังก์ชั่นห้องสมุดใด ๆ ยกเว้นว่าจุดประสงค์เดียวของฟังก์ชั่นนั้นคือการค้นหาสร้างหรือตรวจจับเฉพาะช่วงเวลา

แก้ไข:

ในขณะที่ผู้ชนะอาจเป็นทางออกของ Golfscript ฉันจะให้รางวัล 50 คะแนนสำหรับโซลูชั่น C หรือ C ++ ที่ดีที่สุด!


การวัดแบบสี่เหลี่ยมผืนผ้าของคุณล้มเหลวในการลดทอนการแก้ปัญหาที่เห็นได้ชัด - จะดีกว่าถ้าใช้ระยะเวลาที่ยาวที่สุด แม้ว่าจะเป็นการลดคำตอบของ GS ในการให้คะแนน 4
บูธโดย

คุณพูดถูก ปัญหาที่ถูกย้ายถัดไปควรมีวิธีแก้ปัญหาแบบสมมาตรและตัวชี้วัดที่แตกต่างกัน อย่างไรก็ตามฉันคิดว่าแม้จะมีบางคนที่หลีกเลี่ยงกฎหรืออย่างน้อยก็พบทางออกที่ QA ไม่ได้คาดหวังเมื่อเขียนกฎ
vsz

คำตอบ:


7

GolfScript, 13 × 1

~.,2>{1$\%!}?

GolfScript นัดหยุดงานอีกครั้ง!

ทำซ้ำอินพุตหากมีค่ามากมิฉะนั้นจะพิมพ์อินพุตที่ต่อกันด้วยตัวหารที่เหมาะสมที่สุดที่เล็กที่สุด ใช่ฉันรู้ว่าการยืดความหมายของ "สิ่งใดก็ตามที่ระบุผลลัพธ์อย่างไม่ชัดเจน" แต่การทำสิ่งใดก็ตามที่นักเล่นต้องเสียค่าใช้จ่ายเพิ่มเป็นพิเศษ หากคุณต้องการให้เอาต์พุตดีกว่าให้เพิ่มอักขระสามตัวต่อท้าย;]!โค้ด1เพื่อให้ได้จำนวนเฉพาะและ0สำหรับจำนวนคอมโพสิต

อัลกอริธึมนั้นไม่มีประสิทธิภาพจริงๆเพียงแค่แบ่งการทดลองกำลังดุร้ายจาก 2 ถึงn −1 ผู้ประกอบการ GolfScript ส่วนใหญ่เป็นเพียงตัวอักษรเดียวดังนั้นรหัสนี้ทำงานได้ดีเช่นกัน น่ารำคาญแม้ว่าผู้ดำเนินการที่ได้รับมอบหมาย:ไม่อนุญาตให้มีช่องว่างระหว่างตัวเองและเป้าหมายของมันดังนั้นฉันต้องทำสิ่งนี้โดยไม่มีตัวแปร


Wrt "นักเล่นอะไรก็ต้องเสียค่าใช้จ่ายเพิ่มอีกสองสามตัว" - คุณสามารถรับ Boolean สไตล์ GolfScript ในราคาเพียง 2
ปีเตอร์เทย์เลอร์

@Peter: คุณหมายถึงบางสิ่งบางอย่างเช่นการแก้ไขของฉันด้านบนเท่านั้นโดยไม่มี!? หรือคุณมีสิ่งที่นักเล่นในใจ?
Ilmari Karonen

1
ฉันคิด)มาก่อน,เพื่อที่จะได้พบกับตัวหารและ=ท้ายที่สุด
Peter Taylor

:ตามด้วยการขึ้นบรรทัดใหม่กำหนดให้กับอักขระขึ้นบรรทัดใหม่ - ดังนั้นจึงไม่ใช่ช่องว่างที่ไม่ได้รับอนุญาตเป็นเพียงช่องว่างที่เป็นสิ่งที่ได้รับมอบหมาย
gnibbler

@gnibbler: ในทางเทคนิคเราทั้งคู่ถูกต้อง :ไม่อนุญาตให้มีช่องว่างหรือสิ่งอื่นใดระหว่างตัวเองและเป้าหมาย: อะไรก็ตามก็ตามทันทีไม่ว่าจะเป็นช่องว่างหรือโทเค็นอื่น ๆ (ใช่ตัวเลขแม้แต่สายอักขระหรือบล็อกรหัส) เป็นสิ่งที่ได้รับมอบหมาย อย่างไรก็ตามช่องว่างเป็นสิ่งที่เอกสารอย่างเป็นทางการเตือนโดยเฉพาะและด้วยเหตุผลที่ดี - เนื่องจากในที่อื่น ๆ ส่วนใหญ่การเพิ่มช่องว่างระหว่างโทเค็นใน GolfScript ไม่ได้ทำอะไรเลย (ปกติยกเว้นว่าได้รับมอบหมายให้ ... )
Ilmari Karonen

21

C, 2 * 70 2 * 60

พิมพ์yสำหรับช่วงเวลาไม่มีอะไรอย่างอื่น
แก้ไข : เปลี่ยนรหัสเพื่อบันทึก 10 ตัวอักษร ต้องทำงานโดยไม่มีพารามิเตอร์ (ดังนั้นm=1)

main(m,n){for(scanf("%d",&n);n%++m&&n>1;);n-m||puts("y");}/*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/ 

วิธีการจัดการการขนย้ายค่อนข้างทั่วไปและสามารถนำไปใช้กับโปรแกรมใด ๆ
มันขึ้นอยู่กับการแปลงนี้:

abcd/*
\\\\*/

สำหรับสิ่งนี้:

a\
b\
c\
d\
/*
*/

abcdและทั้งสองก็หมายความว่า


ว้าวการใช้การต่อแถวแบบผิด ๆ นั้นฉลาด :)
vsz

2
นี่คือเว็บไซต์กอล์ฟ / ปริศนา ไม่มีสิ่งใดในทางที่ผิด
บูธตาม

2
@boothby ฉันเดาว่าเขาหมายถึงการละเมิด แต่ฉันไม่เถียงกับคำชม
ugoren

14

C - 13x13

อ่านอินพุตจาก stdin และพิมพ์ a 1สำหรับ prime และ a 0สำหรับ prime

////m(i;(a=)<
////aans")a;2
//:Di)tc%;;p)
//O n{ adfau+
main//bn"o%t4
(a){///f,r-c8
int b///&(-h)
;scanf///bba;
("%d",&///;r}
a);for(b///( 
=a;a%--b;//( 
);putchar((b 
<2)+48);}    

แก้ไข: คอมไพล์ด้วย gcc และเสียงดังกราวตอนนี้คอมไพเลอร์อื่น ๆ ไม่ได้ทดสอบ


12

C, 12x12 ตัวอักษร

วิธีแก้ปัญหาสองมิติซึ่งแตกต่างจากคำตอบอื่น ๆ ของฉันโดยใช้รหัสเดียวกัน (และชอบพิมพ์ออกมาyเพื่อไพรม์ไม่มีอะไรสำหรับคอมโพสิต)
โครงสร้างคล้ายกับคำตอบของ Quasimodoแต่รหัสของฉันสั้นกว่าและฉันคิดว่าการใช้ comemnts ของฉันนั้นมีประสิทธิภาพมากกว่านี้เล็กน้อยดังนั้นฉันจึงสามารถใส่ 12x12 ได้

////m()s";np
////am{c%n>u
////i,fad%1t
////nnon"+;s
main//rf,+)(
(m,n//((&m;"
){for(//n&ny
scanf(//)&-"
"%d",&n)//m)
;n%++m&&//|;
n>1;);n-m|| 
puts("y"); }

7

Perl, 14 x 14

ฉันคิดว่าฉันกำลังติดเรื่องนี้อยู่ ระบุจำนวนเป็นอาร์กิวเมนต์บรรทัดคำสั่งผลหรือ0 1อาจมีพื้นที่มากขึ้นสำหรับการปรับปรุง

$   n=pop;$p|=
 !  ($n%$_)for
  2 ..$n/2;   
   print!$p+m~
n(.r          
=$.i          
pn$n          
o%nt          
p$/!          
;_2$          
$);p          
pf +          
|o m          
=r ~          

3

Q

ความคิดเห็นที่ไม่เหมาะสมสำหรับวิธีการแก้ปัญหาแบบสมมาตรและไม่มีประสิทธิภาพของอักขระ

/{/////////////////////////////////
{(~)any 0=mod[x;2+(!)x-2]}"I"$(0:)0
/~
/)
/a
/n
/y
/ 
/0
/=
/m
/o
/d
/[
/x
/;
/2
/+
/(
/!
/)
/x
/-
/2
/]
/}
/"
/I
/"
/$
/(
/0
/:
/)
/0

รับอินพุตจาก STDIN ส่งคืนบูลีน


สังเกตเห็นsqrtในที่นั่น เมื่อมองหาช่วงเวลาเฉพาะในการเขียนโค้ดกอล์ฟมันมักจะเป็นประโยชน์ (แยก) โดยสิ้นเปลืองแบ่งออกเป็น n แทนที่จะหยุดที่ sqrt n
gnibbler

จริงมากขอบคุณ ฉันยังไม่มีโอกาสลองและได้คะแนนที่ดีขึ้น
skeevey

คุณควรใส่คะแนนลงในคำตอบของคุณ
FlipTack

2

เยลลี่ขนาด 2x2 ตาราง

PÆ
ÆP

ลองออนไลน์!

ฉันคิดว่าฉันมีส่วนการขนย้ายที่ถูกต้องและถ้าเป็นเช่นนั้นเวอร์ชัน transposed ของนี้คือ

PÆ
ÆP

ลองออนไลน์!

(ซึ่งเป็นรหัสเดียวกัน)


4
นี้ไม่ถูกต้อง: " คุณสามารถใช้ภาษาใด ๆ และการทำงานของห้องสมุดใด ๆยกเว้นถ้าวัตถุประสงค์เพียงอย่างเดียวของฟังก์ชั่นที่มีการค้นหา, การสร้างหรือการตรวจสอบช่วงเวลา . "
เควิน Cruijssen

1

05AB1E , 1x5 1x3 ( 5 3 ไบต์ )

นี่ไม่ใช่หนึ่งในโปรแกรมใหญ่ แต่ละบรรทัดเป็นโปรแกรมทางเลือกที่แยกจากกันเพื่อจัดการกับการตรวจสอบเฉพาะ

ÑPQ
ÒgΘ
ÒQP
ÕαΘ
fQO
fs¢
f`Q

-2 ไบต์ขอบคุณที่สกปรก

ช่องว่างระหว่างบรรทัดนั้นไม่มีตัวเลือกใน 05AB1E และเนื่องจากฉันใช้คำสั่ง 1 ไบต์เท่านั้นจึงใช้งานได้ดีหลังจากการแปลง

เอาท์พุท1/0สำหรับความจริง / เท็จตามลำดับ

ลองคนแรกออนไลน์หรือตรวจสอบกรณีทดสอบบางมากขึ้นสำหรับพวกเขาทั้งหมด (กับ builtin EVAL.V )
ย้าย: ลองคนแรกออนไลน์

คำอธิบาย:

Ñ    # Get a list of all divisors of the (implicit) input-integer
     # (which would be only 1 and the integer itself for primes)
 P   # Take the product of that list
  Q  # And check if it's equal to the (implicit) input-integer

Ò    # Get a list of all prime factors of the (implicit) input-integer 
 g   # Get the amount of those prime factors by taking the length of the list
  Θ  # Check if that's equal to 1 (so only itself is a prime factor)

Ò    # Get a list of all prime factors of the (implicit) input-integer including duplicates
 Q   # Check for each if it's equal to the (implicit) input-integer
     # (1 if truthy; 0 if falsey)
  P  # Take the product of those checks (resulting in either 1 or 0 as well)

Õ    # Get the Euler totient of the (implicit) input-integer
 α   # Take the absolute difference with the (implicit) input-integer
  Θ  # Check if that's equal to 1

f    # Get a list of all prime factors of the (implicit) input-integer without duplicates
 Q   # Check for each if it's equal to the (implicit) input-integer
  O  # And take the sum of that (resulting in either 1 or 0)

f    # Get a list of all prime factors of the (implicit) input-integer without duplicates
 s   # Swap to get the (implicit) input-integer
  ¢  # And count how many time it occurs in the list

f    # Get a list of all prime factors of the (implicit) input-integer without duplicates
 `   # Dump all the content of this list onto the stack
  Q  # Check if the top two values are equal, or if only a single value is present, it will
     # use the (implicit) input-integer as second value

     # For all these program the same applies at the end:
     # (implicitly output the result with trailing newline)

หมายเหตุ: หากมีเพียงค่าความจริง / เท็จเท่านั้นที่ถูกต้องและไม่จำเป็นต้องมีความแตกต่างอย่างใดอย่างหนึ่งÒgหรือÕαสามารถใช้เป็น 2 ไบต์ที่ถูกต้องเนื่องจาก1เป็นจริงใน 05AB1E และทุกอย่างอื่นเป็นเท็จ: ลองทั้งสองอย่าง พวกเขาสำหรับบางกรณีทดสอบพวกเขาสำหรับกรณีทดสอบบางอย่าง

หากได้รับอนุญาต builtins เดียวpจะมีพอเพียง: ลองออนไลน์หรือตรวจสอบกรณีทดสอบบางมากขึ้น


1
ÑPQหรือÒgΘหรือÒQP3 ไบต์ ( ÑและÒทั้งสองมีวัตถุประสงค์อื่นนอกเหนือจาก“ เพื่อค้นหาสร้างหรือตรวจจับช่วงเวลา” ดังนั้นพวกเขาจึงไม่รวมอยู่ในการแบนโดยการอ่านของฉัน)
Grimmy

1
เพิ่มเติม 3 byters: ÕαΘ, fQO, fs¢,f`Q
Grimmy

@Grimy Ah, ไม่น่าเชื่อว่าฉันไม่ได้คิดเกี่ยวกับ divisors หรือปัจจัยสำคัญที่สร้างขึ้นภายใน .. ฉันตอบเร็วเกินไปฉันเดา ไม่เคยรู้มาÕαก่อน! นั่นเป็นสิ่งที่ดีงาม
Kevin Cruijssen

0

เวทมนตร์รูน , 7 × 1

v̀i'PA@

ลองออนไลน์!

Runic ไม่สนใจความพยายามที่อ่อนแอของคุณในการจัดเรียงซอร์สใหม่! สอดคล้องกับความต้องการของยังคงทำงานหลังจากที่มีค่าใช้จ่าย transposed แหล่งที่มา +3 ไบต์ (ความกว้างสี่เหลี่ยม +2) สำหรับการปรับตัวสะท้อนและจุดเข้า

ขนย้ายหรือขนย้าย แต่ออกจากตัวละครรวมที่แนบมากับแม่ของมัน





0

APL (Dyalog Unicode) , 10x11

{⍵∊∘.×⍨1↓⍳⍵          
           
           
 .          
 ×          
           
 1          
           
           
          }

ลองออนไลน์!

แก้ไขฟังก์ชันให้สอดคล้องกับข้อกำหนด ขอบคุณ @ Adámสำหรับหัวขึ้น

ผลตอบแทน0 truthy, 1 สำหรับ falsy

อย่างไร

{⍵∊∘.×⍨1↓⍳⍵  Dfn. everything below this is a noop up until closing the brace
         ⍳⍵  Range [1..arg]
       1    Dropping the first element (yields [2..arg])
   ∘.×⍨      Multiplication table for each element in the vector
 ⍵∊          Check if the argument is in the table.

เวอร์ชันที่ถูกย้ายจะเหมือนกันทุกประการ

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