ในภาษาการเขียนโปรแกรม Cมีการก่อตัวที่เรียกว่าdigraphs และ trigraphsซึ่งเป็นลำดับอักขระสองและสามตัวที่ประเมินเป็นอักขระทั่วไปน้อยลง ตัวอย่างเช่นคุณสามารถใช้ถ้าแป้นพิมพ์ของคุณไม่มี??-~
ข้อความที่กำหนดให้แทนที่อินสแตนซ์ทั้งหมดของ digraphs และ trigraphs ต่อไปนี้ (ด้านซ้าย) ด้วยอักขระที่ถูกต้องสั้นลง golfed (ด้านขวา)
??= #
??/ \
??' ^
??( [
??) ]
??! |
??< {
??> }
??- ~
<: [
:> ]
<% {
%> }
%: #
อินพุต
อินพุตเป็นข้อความ ASCII ขึ้นบรรทัดใหม่ที่ได้รับอนุญาต ไม่จำเป็นต้องเป็นรหัส C ที่ถูกต้อง
เอาท์พุต
เอาท์พุทเป็นข้อความเดียวกันโดยที่ทุกอินสแตนซ์ของ digraphs และ trigraphs ข้างต้นถูกแทนที่ด้วยเวอร์ชั่นที่ย่อลงซึ่งประเมินจากซ้ายไปขวา ขึ้นบรรทัดใหม่ที่ได้รับอนุญาต ไม่จำเป็นต้องเป็นรหัส C ที่ถูกต้อง
กรณีทดสอบ
=> แยกอินพุตและเอาต์พุต
if (true ??!??! false) { => if (true || false) {
??-arr.indexOf(n) => ~arr.indexOf(n)
function f(??) { console.log('test??'); } => function f(] { console.log('test^); }
/* comment :> :) *??/ => /* comment ] :) *\
%:What am I doing??!!??` => `#What am I doing|!??
??(??)??(??) <:-- not a palindrome => [][] [-- not a palindrome
?????????? => ??????????
int f(int??(??) a) ??< return a??(0??)??'a??(1??) + "??/n"; ??> => int f(int[] a) { return a[0]^a[1] + "\n"; }
??<:>??<% => {]{%
<:> => [>
<::> => []
:>> => ]>
#\^[]|{}~ => #\^[]|{}~
: > => : >
??=%: => ##
"??=%:"เป็นกรณีการทดสอบอื่นที่เกี่ยวข้อง: ใน C หมายถึงนี้"#%:"ที่%:ไม่ได้เป็นพิเศษ "##"แต่ผมคิดว่าการส่งออกที่คาดว่าจะเป็นของคุณ