เพิ่มความคิดเห็นไปยังสคริปต์ Python และทำให้เป็น "โปรแกรม Python / C ++" สองภาษา


12

รับสคริปต์ Python 3 ต่อไปนี้:

def greet():
    print("Hello, world!")

greet()

เติมบางบรรทัดลงในไฟล์ข้อความนี้เพื่อให้สามารถดำเนินการทั้งสองเป็นโปรแกรม Python ได้เช่นเดียวกับการคอมไพล์และเรียกใช้เป็นโปรแกรม C ++ ที่สร้างผลลัพธ์เดียวกัน Hello, world! (รวมถึงการขึ้นบรรทัดใหม่ในตอนท้าย):

$ python3 bilingual.py.cpp
Hello, world!
$ g++ bilingual.py.cpp && ./a.out
Hello, world!

การแก้ปัญหาจะได้คะแนนจากจำนวนตัวอักษรที่ไม่ใช่ช่องว่างของโปรแกรมทั้งหมดรวมถึงสคริปต์ Python:

sed 's/\s//g' bilingual.py.cpp|wc -c

5
ในชื่อที่คุณพูดเพิ่มความคิดเห็น แต่ในร่างกายคุณบอกว่าคุณจะต้องเติมบางบรรทัด มันคืออะไร
Ad Hoc Garf Hunter

@WheatWizard ชื่อเป็นคำใบ้ หากคุณสามารถแก้ปัญหานี้ได้โดยการนำเสนอบรรทัดโดยพลการ (ไม่ใช่ความเห็น) ฉันจะสับสน
Leon

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

@Linus ฉันยอมรับว่าการเลือกคะแนนในแบบที่ไม่ได้มาตรฐานนั้นเป็นความผิดพลาด จะไม่ทำซ้ำในอนาคต
Leon

2
เพียงแค่ทราบ: คำสั่ง sed ที่จัดไว้ให้นับบรรทัดใหม่นั่นคืออักขระช่องว่าง
edc65

คำตอบ:


10

คะแนน 116

ย่อหน้า:

#include<cstdio>
#define print(A)main(){puts(A);}
#define greet()
#define \

แบ็คสแลช preprocessor \จะดึง:บรรทัดที่น่ารังเกียจลงในแมโครที่ไม่ได้ใช้ ลองมันนี่

ขอบคุณคำตอบของ edc65สำหรับบันทึกย่อเกี่ยวกับ int โดยนัยใน C ++ 4
ขอบคุณกับคำตอบของ PieCotสำหรับการแนะนำมากกว่า<cstdio> ขอขอบคุณที่ลีออนสำหรับผมขอแนะนำให้ลบเดิม<stdio.h>
X#define X\


ฉันไม่มีปัญหาถ้ามีใครสามารถตรวจสอบคะแนนของฉันได้
Linus

ลบช่องว่างทั้งหมดการนับของฉัน (ด้วยมือ) คือ 110 (แต่ฉันผิด ... มันคือ 111)
edc65

2
@Linus ทำไมคุณถึงต้องการ X ใน `#define X \ '
Leon

@ ลีออนจับที่ดี!
ไลนัส

2
สำหรับทุกคนที่สงสัยว่าสิ่งที่ C ++ 4: ในกรณีนี้มันสั้นสำหรับ"c ++ ที่ GCC 4.3.2 ยอมรับ"
nwp

11

คะแนน 119

(ขอบคุณ @Linus สำหรับจำนวนไบต์)

(1 ไบต์บันทึกขอบคุณ @ @ Conor O'Brien) (1 ไบต์บันทึกขอบคุณ @PieCot)

นับจำนวนด้วยมืออีกครั้งฉันพบ 113 อาจเป็นเวลานี้ ไม่มันไม่ใช่

#include <cstdio>
#define def main(){0?
#define print(x) puts(x);}
#define greet()

หมายเหตุ: stdio และ put ยังมีชีวิตอยู่และเตะใน C ++ ประเภท int ที่หายไปนั้นใช้ได้ในการทดสอบ C ++ 4.


คะแนนจะต้องคำนวณกับโปรแกรมเต็มรูปแบบ (รวมถึงรหัสหลาม)
Leon

เนื่องจากเงื่อนไขที่ประกอบไปด้วยสามารถมีส่วนที่สองที่ว่างเปล่าคุณสามารถลบส่วนท้าย0ที่บรรทัดที่ 2 ทดสอบ
Conor O'Brien

ตกลงฉันไม่เห็นสาเหตุเพราะรหัสหลามจะเหมือนกันทุกคำตอบ แต่คุณคือหัวหน้า ฉันนับด้วยมือโดยไม่ต้องใจฉันหวังว่ามันจะถูกต้อง
edc65

@ ConorO'Brien มันทำได้จริง ๆ ! ฉันไม่รู้! ขอบคุณ
edc65

คุณสามารถใช้ <cstdio> แทนที่จะเป็น <stdio.h>
PieCot

7

คะแนน131 130 134

บรรทัดที่ต้องมีการเติมคือ:

#import <iostream>
#define def int main(){0?
#define greet()
#define print(A) 0;std::cout<<A"\n";}

และรหัสผลลัพธ์:

#import <iostream>
#define def int main(){0?
#define greet()
#define print(A) 0;std::cout<<A"\n";}
def greet():
    print("Hello, world!")

greet()

การทดสอบ

C:\Users\Conor O'Brien\Documents\Programming\golf
λ type bilingual.py.cpp

#import <iostream>
#define def int main(){0?
#define greet()
#define print(A) 0;std::cout<<A"\n";}
def greet():
    print("Hello, world!")

greet()
C:\Users\Conor O'Brien\Documents\Programming\golf
λ sed 's/\s//g' bilingual.py.cpp|wc -c
134

C:\Users\Conor O'Brien\Documents\Programming\golf
λ g++ bilingual.py.cpp 2>nul && a
Hello, world!

C:\Users\Conor O'Brien\Documents\Programming\golf
λ python bilingual.py.cpp
Hello, world!

C:\Users\Conor O'Brien\Documents\Programming\golf
λ 

เอาต์พุตของเวอร์ชัน C ++ ไม่เหมือนกับเวอร์ชันของไพ ธ อน - มันหายไปจากบรรทัดใหม่ เพิ่มการชี้แจงให้กับคำถาม
Leon

@Leon ตอนนี้ได้รับการแก้ไขแล้ว
Conor O'Brien

#importไม่ถูกต้อง C ++
Leon

1
การจัดการอย่างชาญฉลาดของ:
edc65

2
@Leon กฎเว็บไซต์ของเราบอกว่าถ้ามันใช้งานได้ในสภาพแวดล้อมเดียวมันเป็นการส่งที่ถูกต้อง
Conor O'Brien


5

คะแนน 136

สำหรับบันทึกเท่านั้น:

#include <cstdio>
#define def class a{public
#define greet()
#define print(a) };int main(){puts(a);}

อีกวิธี (ที่มีประสิทธิภาพน้อยกว่า) ในการจัดการลำไส้ใหญ่


1
แต่cstdioควรสังเกต
edc65

ฉันคิดว่าคะแนนสำหรับเรื่องนี้จบลงที่ 136 คุณไม่นับช่องว่าง
Linus

@Linus: ขอบคุณ! ฉันคิดว่าคุณถูก. ถ้าฉันใช้คำสั่งนี้: tr -d '[:space:] ' < bilingual.py.cpp | wc -c ฉันจะได้รับ 128 ขณะที่อันนี้ tr -d '[:blank:] ' < bilingual.py.cpp | wc -c ให้ 136
PieCot
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.