รหัสบิลเลียด (เลเวนเซทกอล์ฟ)


24

คุณต้องใช้ภาษาเดียวกับโปรแกรมเขียนที่ดำเนินการดังต่อไปนี้เก้างาน, ในลำดับใด ๆ ที่คุณต้องการ

  • แปลงตัวเลขที่ป้อนจากฐาน 10 เป็นฐาน 36
    • ตัวอย่างอินพุต: 1000
    • ตัวอย่างเอาต์พุต: RS(เอาต์พุตต้องเป็นตัวพิมพ์ใหญ่)
  • แปลงอักขระแต่ละตัวในสตริงให้เป็นรหัส ASCII ทศนิยม 10 ตำแหน่งและพิมพ์รหัสที่ต่อกันเข้าด้วยกัน
    • ตัวอย่างอินพุต: Scrambled 3GG5
    • ตัวอย่างผลลัพธ์: 839911497109981081011002051717153
  • พิจารณาว่าตัวเลขที่ป้อนเข้าหารด้วย 1738
    • ส่งคืนค่าความจริงหากเป็นและค่าเท็จถ้าไม่
  • ตรวจสอบว่าสายมีตัวอักษรqในมัน
    • ส่งคืนค่าความจริงหากมีและค่าเท็จถ้าไม่
  • เข้ารหัสสตริงของตัวอักษรที่ป้อนเข้าด้วยรหัสซีซาร์ของ +1
    • เคสต้องได้รับการเก็บรักษาไว้ อักขระที่ไม่ใช่ตัวอักษรจะถูกพิมพ์โดยไม่มีการดัดแปลง
    • ตัวอย่างอินพุต: Good morning, World!
    • ตัวอย่างผลลัพธ์: Hppe npsojoh, Xpsme!
  • ค้นหาและพิมพ์ผลรวมของปัจจัยสำคัญของตัวเลข
    • ตัวอย่างอินพุต: 1320
    • ตัวอย่างผลลัพธ์: 21
  • PPCGพิมพ์
  • พิมพ์ครั้งแรกจำนวนเต็มบวกที่หารด้วย nfloor(sqrt(n))
    • n เป็นจำนวนเต็มที่ป้อนเข้า
  • เปลี่ยนทุกๆoและในสตริงป้อนด้วย O
    • ตัวอย่างอินพุต: Onomatopoeia
    • ตัวอย่างผลลัพธ์: ಠnಠmatಠpಠeia

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

คะแนนของคุณจะถูกกำหนดดังนี้

  • คะแนนของคุณเพิ่มขึ้นที1ละไบต์ในโปรแกรมของคุณ
  • คะแนนของคุณขึ้นไปโดยfloor(n^(1.5))ถ้าสองโปรแกรมติดต่อกันมีระยะทาง Levenshtein nของ ตัวอย่างเช่นหากโปรแกรมแรกของคุณคือpotatoและโปรแกรมที่สองtatersของคุณคะแนนของคุณเพิ่มขึ้น 12 สำหรับ 12 ไบต์และโดย11= floor(5^(1.5))สำหรับระยะทาง Levenshtein 5

จุดประสงค์ของการท้าทายนี้คือการได้คะแนนต่ำที่สุดเท่าที่จะเป็นไปได้หลังจากเขียนโปรแกรมทั้งหมดเก้าโปรแกรม ใช้กฎ CG มาตรฐาน


หากต้องการดูลีดเดอร์บอร์ดให้คลิก "แสดงข้อมูลโค้ด" เลื่อนไปที่ด้านล่างและคลิก "►เรียกใช้ข้อมูลโค้ด" ส่วนย่อยทำโดยเครื่องมือเพิ่มประสิทธิภาพ


1
โอ้โห ... ฉันมีความคิดเดียวกันที่แน่นอนสำหรับการท้าทายเมื่อคืนนี้ ช่างประหลาด
เหลือเกิน

@ ETHproductions ฉันได้รับความคิดเมื่อคืนนี้เช่นกันและเขียนอะไรบางอย่างเกี่ยวกับมันใน Sandbox ความคิดของคุณมาจากที่นั่นใช่หรือไม่? ถ้าไม่บังเอิญเป็นเรื่องตลกจริงๆ
Arcturus

1
ไม่ฉันมีความคิดในขณะที่ฉันกำลังจะนอน ไม่เห็นโพสต์ของคุณเลย! ฉันเดาว่านี่เป็นตัวอย่างของ "code-golf
mind

ระยะทางของ Levenshtein คืออะไรและ aมันคือ 1 (นับเป็น 1 ตัวอักษร) หรือ 2 (เพราะจริง ๆ แล้วคือ 2 ไบต์)?
Jakube

1
@Mego นี่คืออัลกอริทึมที่เร็วขึ้น :) นอกจากนี้คุณอาจไม่เห็นสิ่งนี้ แต่ในคำตอบของฉันคือตัวอย่างข้อมูลที่จัดเรียงโปรแกรมตามลำดับที่เหมาะสมโดยอัตโนมัติและใช้อัลกอริธึมที่รวดเร็วเป็นพิเศษ
ETHproductions

คำตอบ:


8

Japté , 886 866 766 725 688 669

ภารกิจที่ 5 และ 6 เป็นนักฆ่า บางทีอาจมีวิธีที่สั้นกว่าในการทำให้เสร็จ ฉันคิดว่าระยะทางของ Levenshtein จะลดลงเช่นกัน

  • งาน 3 (divisiblity): !(U%#ۊ
    7 ไบต์ (อาหรับอารบิก messes up alignment)
  • ภารกิจที่ 4 (การตรวจสอบ 'q'): U!=Uk'q7 ไบต์, ส่วน 11
  • งาน 1 (การแปลงฐาน): Us36 u6 ไบต์, ระยะห่าง 14
  • ภารกิจ 2 (รหัส ASCII): UmX=>Xc7 ไบต์, ส่วนที่ 14
  • ภารกิจที่ 7 (ดูตัวคุณเอง): "PPCG"6 ไบต์, ระยะทาง 18
  • งาน 9 (การแทนที่ಠ): Ur"[Oo]",'ಠ13 ไบต์, ระยะห่าง27
  • งาน 8 (ชั้น (sqrt (n))): X=Uq f;XoU*X+1,X16 ไบต์, ระยะทาง 52
  • งาน 6 (ผลรวมของตัวประกอบนายกรัฐมนตรี): 2oU fX=>2oX eY=>X%Y &&!(U%X)r(X,Y =>X+Y39 ไบต์, ระยะห่าง 172
  • งานที่ 5 (รหัสซีซาร์): UmX=>128o mY=>Yd)a k'A i#Z,'A k'a i#z,'a gXc44 ไบต์, ระยะทาง 216

นี่คือตัวอย่างข้อมูลที่จะบอกคุณ (หนึ่งใน) วิธีที่มีประสิทธิภาพสูงสุดในการจัดโปรแกรมของคุณ:

ด้วยเวอร์ชันล่าสุดของ Japt (ไม่แข่งขันในการท้าทายนี้) งานส่วนใหญ่จะสั้นลง:

  • ภารกิจที่ 1: s36 u5 ไบต์
  • ภารกิจที่ 2: mc2 ไบต์
  • ภารกิจที่ 3: v#ۊ
    4 ไบต์
  • ภารกิจ 4: oq2 ไบต์
  • ภารกิจที่ 5: ;B±B+C²UrF,@Bg1+BbX19 ไบต์
  • ภารกิจที่ 6: k â x5 ไบต์
  • ภารกิจที่ 7: "PPCG5 ไบต์
  • ภารกิจที่ 8: B=U¬f)oU*B+1B13 ไบต์
  • ภารกิจ 9: ro'ಠ'i6 ไบต์

คำสั่งซื้อที่ดีที่สุดคือ 2,4,3,1,6,7,9,8,5 อันมาด้วยคะแนนสูงสุด217น้อยกว่าหนึ่งในสามของต้นฉบับ!

ยินดีต้อนรับข้อเสนอแนะ!


7

Pyth, คะแนน 489

การแปลงฐาน: 15

s@L+s`MTrG1jQ36

Caesar Cipher: 13 + 11 ^ 1.5

u.rGHrBG1z 36

หารด้วย 1738: 7 + 11 ^ 1.5

!%Q1738

จำนวนเต็มบวก N ตัวแรก: 8 + 8 ^ 1.5

*Rs@Q2SQ

ผลรวมของปัจจัยหลัก: 4 + 6 ^ 1.5

s{PQ

การปรากฏตัวของ q ในสตริง: 4 + 4 ^ 1.5

}\qz

เข้าร่วมรหัส ASCII ทั้งหมด: 5 + 4 ^ 1.5

jkCMz

พิมพ์ "PPCG": 5 + 5 ^ 1.5

"PPCG

แทนที่ด้วย: 9 + 7 ^ 1.5

Xz"oO"\ಠ

3

ทับทิม, 1488

น่าจะมีห้องพักมากมายสำหรับการปรับปรุงที่นี่ ใช้เวลาส่วนใหญ่ในการคำนวณคะแนน ...

ผลรวมของปัจจัยสำคัญ : 64
require'prime';p gets.to_i.prime_division.reduce(0){|s,a|s+a[0]}
ฐาน 36 : 30 + 47 1.5 = 352
puts gets.to_i.to_s(36).upcase
หารด้วย 1738 : 22 + 15 1.5 = 80
puts gets.to_i%1738==0
พิมพ์ PPCG : 9 + 18 1.5 = 85
puts:PPCG
สตริงมีqหรือไม่ : 10 + 8 1.5 = 32
p gets[?q]
แทนที่o : 23 + 16 1.5 = 87
puts gets.gsub(/o/i,?ಠ)
รหัสของ Ceasar : 32 + 21 1.5 = 128
puts gets.tr 'A-Za-z','B-ZAb-za'
รหัส ASCII : 37 + 26 1.5 = 169
puts gets.chomp.chars.map(&:ord).join
จำนวนเต็มหารด้วยรากที่สอง : 72 + 56 1.5 = 491
puts *(1..1/0.0).lazy.select{|i|i%Math.sqrt(i).floor==0}.take(gets.to_i)

คุณอาจได้รับการปรับปรุงถ้าคุณแปลงโปรแกรมของคุณเป็น lambdas
ไม่ใช่ Charles

3

Java, คะแนน 8331

ระยะทางพวกเขา levenshtein กำลังฆ่าคะแนนของฉันที่นี่

(โปรแกรมเหล่านี้รับอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง)

โปรแกรม 1 (119):

class L{public static void main(String[]a){System.out.print(Integer.toString(Integer.parseInt(a[0]),36).toUpperCase());}}

โปรแกรม 2 (120 + 56 1.5 = 539):

class L{public static void main(String[]a){/*System.out.print*/for(char b:a[0].toCharArray())System.out.print((int)b);}}

โปรแกรม 3 (101 + 49 1.5 = 444):

class L{public static void main(String[]a){System.out.print/*for*/(Integer.parseInt(a[0])%1738==0);}}

โปรแกรม 4 (108 + 20 1.5 = 197):

class L{public static void main(String[]a){System.out.print(/*forInteger.parseInt(*/a[0].indexOf('q')>=0);}}

โปรแกรม 5 (186 + 107 1.5 = 1293):

class L{public static void main(String[]a){for(char b:a[0].toCharArray())System.out.print(Character.isLetter(b)?Character.isUpperCase(b)?b>'Y'?'A':(char)(b+1):b>'y'?'a':(char)(b+1):b);}}

โปรแกรม 6 (327 + 228 1.5 = 3747):

class L{public static void main(String[]a){int i,k=0,j=i=Integer.parseInt(a[0]);for(;i>0;i--)if(p(i)&&j%i==0)k+=i;System.out.print(k);}static boolean p(int n){if(n<2)return 0>0;if(n==2||n==3)return 1>0;if(n%2==0||n%3==0)return 0>0;int i,k=(int)Math.sqrt(n)+1;for(i=6;i<=k;i+=6)if(n%(i-1)==0||n%(i+1)==0)return 0>0;return 1>0;}}

โปรแกรม 7 (336 + 10 1.5 = 368)

class L{public static void main(String[]a){/*int i,k=0,j=i=Integer.parseInt(a[0]);for(;i>0;i--)if(p(i)&&j%i==0)k+=i;*/System.out.print("PPCG");}static boolean p(int n){if(n<2)return 0>0;if(n==2||n==3)return 1>0;if(n%2==0||n%3==0)return 0>0;int i,k=(int)Math.sqrt(n)+1;for(i=6;i<=k;i+=6)if(n%(i-1)==0||n%(i+1)==0)return 0>0;return 1>0;}}

โปรแกรม 8 (351 + 34 1.5 = 549):

class L{public static void main(String[]a){int i,k=1,j=(int)Math.sqrt(i=Integer.parseInt(a[0]));for(;k<i;k++)/*if(p(i)&&j%i==0)k+=i;*/System.out.println(j*k);}static boolean p(int n){if(n<2)return 0>0;if(n==2||n==3)return 1>0;if(n%2==0||n%3==0)return 0>0;int i,k=(int)Math.sqrt(n)+1;for(i=6;i<=k;i+=6)if(n%(i-1)==0||n%(i+1)==0)return 0>0;return 1>0;}}

โปรแกรม 9 (305 + 84 1.5 = 1075):

class L{public static void main(String[]a){int i,k=1,j=0;System.out.print(a[0].replaceAll("o|O",""+(char)3232));}static boolean p(int n){if(n<2)return 0>0;if(n==2||n==3)return 1>0;if(n%2==0||n%3==0)return 0>0;int i,k=(int)Math.sqrt(n)+1;for(i=6;i<=k;i+=6)if(n%(i-1)==0||n%(i+1)==0)return 0>0;return 1>0;}}

3
มันเป็นจาวา คุณไม่ควรคาดหวังคะแนนสั้น ๆ ... ;)
kirbyfan64sos

อินเตอร์เฟซ l {โมฆะหลักคงที่ (String ...
Rohan Jhunjhunwala

1

Pyth คะแนน 817

หมายเลข 1: 24

Jjk+UTrG1VjKvz36=+k@JN;k

หมายเลข 2: (9 + 16 1.5 = 73)

Vz=+kCN;k

หมายเลข 3: (5 + 8 1.5 = 27)

/QC"ۊ

หมายเลข 4: (5 +14 1.5 = 57)

hxz\q

หมายเลข 5: (39 + 37 1.5 = 264)

J+GrG1VzIhxJNKChCNIhxJKpK)EpC-CK26))EpN

หมายเลข 6: (4 + 39 1.5 = 247)

s{PQ

หมายเลข 7: (5 + 4 1.5 = 13)

"PPCG

หมายเลข 8: (12 + 12 1.5 = 53)

VK/@Q2 1*KhN

หมายเลข 9 (13 + 13 1.5 = 59)

j\ಠcj\ಠcz\o\O

ไม่ใช่สิ่งที่ดีที่สุดฉันเพิ่งเริ่มเรียนรู้ pyth วันนี้และคิดว่าฉันจะลองดูหมายเลข 5 ฆ่าคะแนนของฉันจริง ๆ ฉันคิดว่าฉันสามารถทำให้พวกมันสั้นลงสักหน่อย แต่นั่นจะทำให้ฉันเจ็บปวดมากขึ้นในระยะทาง คำแนะนำใด ๆ จากผู้ใช้ pyth ที่มีประสบการณ์มากขึ้นจะชื่นชม


หมายเลข 6 คือสิ่งที่ฆ่าคะแนนของฉันได้อย่างแท้จริง หมายเลข 5, 6 และ 9
SuperJedi224

@ SuperJedi224 คุณสามารถเปลี่ยนลำดับของโปรแกรม ตัวอย่างเช่นการสลับ 5 และ 7 ที่นี่จะทำให้คะแนนลดลงเล็กน้อย
Arcturus

@Eridan เดี๋ยวก่อนคุณทำได้ใช่ไหม ฉันเดาว่าฉันจะทำตอนบ่ายนี้
SuperJedi224

@ SuperJedi224 You must use one language to write programs that perform the following nine tasks, in any order.โชคดี!
Arcturus

3
5 + 14^1.5ไม่ใช่ 19
Jakube

-1

Python 3 (ปัจจุบันไม่ถูกต้อง), 621 ไบต์

from numpy import base_repr
import math
print(base_repr(int(input()),36))
print("".join([str(ord(c)) for c in input()]))
if int(input())%1738 == 0:print(True)
else:print(False)
if "q" in input().lower():print(True)
else:print(False)
t=bytes.maketrans(b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",b"bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA")
print(input().encode("utf-8").translate(t).decode("utf-8"))
print("PPCG")
n=int(input())
for i in range(1,n):
    if i%math.floor(i**0.5)==0:print(i,end=" ")
print("")
y=input()
z=""
for i in y:
    if i.lower()=="o":z+="0"
    else:z+=i
print(z)

ไม่ใช่รหัสที่ดีจริงๆ แต่ใช้งานได้: D ผลรวมของปัจจัยสำคัญไม่ทำงาน ฉันได้รับผลต่างจากตัวอย่างของคุณเสมอดังนั้นฉันจึงลบออก นอกจากนี้ Python ไม่สนับสนุนอักขระดังนั้นแทนที่แทนที่oด้วย0s

IO INFO:

อินพุตแรก: int ในฐาน 10 | ผลลัพธ์: หมายเลขนั้นในฐาน 36

อินพุตที่สอง: สตริง เอาท์พุท: หมายเลข ASCII ของสตริง

อินพุตที่ 3: จำนวนเต็ม | เอาท์พุท: จริงหรือเท็จขึ้นอยู่กับว่าจำนวนหารด้วย 1738

อินพุตที่ 4: สตริง | เอาต์พุต: T หรือ F ขึ้นอยู่กับว่าสตริงมี "q" อยู่หรือไม่

อินพุตที่ 5: สตริง | เอาต์พุต: Caser Cipher +1 ของสตริง

6th: เพียงพิมพ์ "PPCG" อย่างแท้จริง

อินพุตที่ 7: int n | เอาท์พุท: int n แรกหารด้วยชั้น (sqrt (n))

อินพุตที่ 8: สตริง | ผลลัพธ์: แทนที่os ทั้งหมดด้วย 0 (ไม่ใช่กับಠเนื่องจาก python ไม่รองรับอักขระนั้นอย่าโกรธเกินไป :))


โอ้ใช่. คุณช่วยอธิบายการคำนวณปัจจัยสำคัญได้ง่ายๆเพราะฉันได้รับผลลัพธ์ที่แตกต่างจากตัวอย่างในตัวอย่างของคุณเสมอ
Ciprum

13
ยินดีต้อนรับสู่การเขียนโปรแกรมปริศนาและรหัสกอล์ฟ! สิ่งนี้ไม่เป็นไปตามข้อกำหนดของความท้าทายเนื่องจากความท้าทายกำลังร้องขอโปรแกรมที่แตกต่างกันสำหรับแต่ละงาน นอกจากนี้คุณจะต้องปฏิบัติตามกฎการให้คะแนนสำหรับความท้าทายนี้โดยเฉพาะการสังเกตฟังก์ชันระยะทางของ Levenshtein
AdmBorkBork

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