เอาท์พุทภาพของรหัสที่มาของคุณ (ไม่ค่อนข้าง -a-Quine)


29

กอล์ฟรหัส: พิมพ์ภาพของรหัสที่มา

ความต้องการ

  1. ต้องเอาท์พุทอิมเมจของซอร์สโค้ดเองไม่ใช่เวอร์ชันที่เก็บไว้ที่อื่นและดึงข้อมูลในเวลาทำงาน
  2. รหัสจะต้องอ่านได้ชัดเจนเพียงพอที่จะคัดลอกด้วยมือและทำซ้ำผลลัพธ์

สามารถใช้รูปแบบภาพใดก็ได้

โบนัส

  • -10% ของคะแนนถ้าคุณอนุญาตให้ใช้มากกว่าหนึ่งรูปแบบเอาต์พุต
  • -15% ถ้ารหัสของคุณยังควิน 'ความจริง' ie มันไม่ได้อ่านซอร์สโค้ด แต่ซอร์สโค้ดถูกฝังอยู่ (ดูตัวอย่างที่นี่ )
  • -30% ถ้ารหัสของคุณเป็น quine ที่เข้มงวด - นั่นคือภาพของรหัสจะถูกฝังอยู่ในโปรแกรม (โซลูชั่น Piet ฉันกำลังมองคุณอยู่)

จะต้องมีความชัดเจนหรือไม่
Tim Seguine

7
"ต้องส่งภาพอิมเมจเองไม่ใช่เวอร์ชันที่จัดเก็บจากที่อื่น" อนุญาตและ / หรือต้องอ่านไฟล์รหัสต้นฉบับหรือไม่
Tim Seguine

29
ฉันเพิ่งใช้วิธีแก้ปัญหาในช่องว่าง ภาพที่ได้ดูน่าเบื่อมาก
Howard

7
นี่คือภาพควินที่น่าสนใจที่เขียนใน Piet: mamememo.blogspot.be/2009/10/piet-quine.html
ProgramFOX

คำตอบ:


25

เปลือก

โดย "พิมพ์ภาพของซอร์สโค้ด" ฉันถือว่าการพิมพ์ภาพบนกระดาษจริงจะยอมรับได้

#!/bin/sh
lpr $0

21

7
ชุมชนคุณช่วยวิกิคำตอบนี้ได้ไหม? นี่เป็นนโยบายมาตรฐานของเราสำหรับคำตอบที่มาจากภายนอก นี่มันเจ๋งจริงๆ!
Jonathan Van Matre

@JonathanVanMatre อ๊ะขอโทษ นั่นคือสิ่งที่ฉันตั้งใจจะทำ ผมคิดว่าผมไม่ควรพยายามที่จะตอบคำถามในขณะที่มีส่วนร่วมในการอภิปรายอีก
The Guy with The Hat

มันต่ำกว่าของทั้งสอง -30% และ -15%
Pureferret

14

PHP - 487 × 0.9 × 0.85 = 372.555 (2000 × 99px)

<?php $y="imagecolorallocate";$l=[
'<?php $y="imagecolorallocate";$l=[',
'];$i=imagecreate(2e3,99);$y($i,99,99,99);$w=$y($i,$j=0,0,0);$z=function($_)use(&$j,$i,$w){imagestring($i,4,9,$j+=15,$_,$w);};$z($l[0]);foreach($l as$m)$z(chr(39).$m.chr(39).",");$z($l[1]);$argv[1]($i,"o");',
];$i=imagecreate(2e3,99);$y($i,99,99,99);$w=$y($i,$j=0,0,0);$z=function($_)use(&$j,$i,$w){imagestring($i,4,9,$j+=15,$_,$w);};$z($l[0]);foreach($l as$m)$z(chr(39).$m.chr(39).",");$z($l[1]);$argv[1]($i,"o");

หากคำเตือนใช้ได้: PHP - 479 × 0.9 × 0.85 = 366.435

<?php $y=imagecolorallocate;$l=[
'<?php $y=imagecolorallocate;$l=[',
'];$i=imagecreate(2e3,99);$y($i,99,99,99);$w=$y($i,$j=0,0,0);$z=function($_)use(&$j,$i,$w){imagestring($i,4,9,$j+=15,$_,$w);};$z($l[0]);foreach($l as$m)$z(chr(39).$m.chr(39).",");$z($l[1]);$argv[1]($i,o);',
];$i=imagecreate(2e3,99);$y($i,99,99,99);$w=$y($i,$j=0,0,0);$z=function($_)use(&$j,$i,$w){imagestring($i,4,9,$j+=15,$_,$w);};$z($l[0]);foreach($l as$m)$z(chr(39).$m.chr(39).",");$z($l[1]);$argv[1]($i,o);

คุณจัดเตรียมฟังก์ชันเอาต์พุตเพื่อใช้เป็นอาร์กิวเมนต์บรรทัดคำสั่งแรก:

php timwolla.php imagepng

วิธีแก้ปัญหาพร้อมคำเตือน:


5
ฉันคิดว่านี่เป็น quine จริงครั้งแรกและไม่ใช่แค่สคริปต์อ่านซอร์สโค้ดของตัวเองหรือเพียงแค่จับภาพหน้าจอของตัวเอง
nitro2k01

คำถามสองข้อคุณสามารถใช้สัญลักษณ์ที่แตกต่างกันสำหรับทศนิยมของคุณ? มันสับสนเล็กน้อย ทำไมภาพจึงเล็กมาก? เป็นการยากที่จะอ่าน (เป็นที่ยอมรับว่าฉันใช้โทรศัพท์ของฉัน)
Pureferret

2
@Pureferret เพียงแค่ซูมเข้าจริงๆมันค่อนข้างอ่านง่ายแม้จะเป็นแบบพิกเซล
Ruslan

1
@Pureferret เพียงแค่เปลี่ยนพวกเขาฉันไม่เคยจำได้ว่ามันแตกต่างกันในภาษาอังกฤษ ...
TimWolla

13

ช่องว่างที่ 125



















ส่งออกไฟล์รูปภาพในรูปแบบpbm

หากคุณกำลังทดสอบรหัสนี้โปรดคัดลอกโดยคลิกที่ "แก้ไข" และคัดลอกทุกอย่างระหว่าง<pre>แท็ก

เอาท์พุท:

P1 1 1 0

7
คัดลอกด้วยมือ squinting ที่หน้าจอเพื่อดูความแตกต่างเล็กน้อยระหว่างช่องว่างและแท็บ .... เรียกใช้โปรแกรม .... ฮาร์ดไดรฟ์ระเบิด
Jonathan Van Matre

17
คำตอบนี้ไม่เป็นไปตามข้อกำหนด 2 รูปภาพไม่สามารถอ่านได้เพียงพอที่จะทำซ้ำซอร์สโค้ด
user2357112 รองรับ Monica

2
@ user2357112 แต่คุณไม่สามารถพิสูจน์ได้ นั่นคือช่องโหว่ที่ฉันใช้ประโยชน์จากที่นี่
duci9y

21
ใช่ฉันทำได้โดยใช้ทฤษฎีสารสนเทศ การพิสูจน์อย่างเข้มงวดจะเกินขอบเขตของความคิดเห็น 600 ตัว แต่ส่วนสำคัญของมันคือภาพของคุณเหมือนกับภาพรหัสที่ไม่ทำงาน
user2357112 รองรับ Monica

3
ให้อภัยคนฝรั่งเศส แต่ BS! กฎระบุว่ารหัสจะต้องชัดเจน การเขียนโค้ดใน Whitespace ไม่ได้เป็นการลบล้างสิ่งนั้น นี่คือโปรแกรมของคุณที่แสดงใน Sublime Text เมื่อเลือก: i.imgur.com/A2ZaQwI.pngนี่เป็นข้อความที่อ่านง่าย ไม่ว่าผลลัพธ์ของโปรแกรมของคุณจะเป็นอะไร และนอกจากนี้คุณยังไม่ได้อธิบายว่าสิ่งที่โปรแกรมของคุณส่งออกเป็นซอร์สโค้ดของคุณหรือเป็นภาพเปล่า
nitro2k01

13

Mathematica, 37 31 ตัวอักษร

(#2[#1[#0[#1,#2]]]&)[Defer,Rasterize]

(Rasterize[#1[#0[#1]]]&)[Defer]

ป้อนคำอธิบายรูปภาพที่นี่

แรงบันดาลใจจากคำตอบใน mathematica.stackexchange.com


อธิบายว่า ... #n มีไว้ทำอะไร? บางทีเราสามารถหาได้
Pureferret

อย่างน้อยก็ใช้งานได้โดยไม่มี FrontEnd (พยายามExport["/tmp/out.png",%]หลังจากเรียกใช้คำสั่งนี้)
Ruslan

2
@Pureferret #nหมายถึงnอาร์กิวเมนต์ th ของฟังก์ชันบริสุทธิ์ (สร้างที่&จุด) นิพจน์ทั้งหมดขยายไปยังRasterize[Defer[#0[Defer,Rasterize]]]ที่ซึ่งการ#0เรียกซ้ำของฟังก์ชันบริสุทธิ์ดั้งเดิม ในทางใดทางหนึ่งนี่ไม่ใช่ quine ที่เข้มงวด แต่ไม่จำเป็นต้องมีส่วนหน้าในการทำงานและเป็นวิธีที่ดีสำหรับ IMO
Ruslan

ฉันชื่นชมการใช้ Defer [] และ Rasterize [] เป็นทั้งคำสั่งและวัตถุของคำสั่ง ฉันไม่เคยเห็นการเรียกซ้ำแสดงด้วยวิธีนี้มาก่อน
Michael Stern

10

AppleScript, 68 37

เอาล่ะถ้าคุณสามารถโทร ImageMagick ใน zsh นี่ก็ใช้ได้เช่นกัน ฉันยังคงแฮ็คสิ่งที่สง่างามและล้ำสมัยเพื่อความพึงพอใจของตัวเอง แต่เพื่อความบริสุทธิ์ของกอล์ฟที่นี่เราคือ:

เวอร์ชั่นใหม่

do shell script "screencapture q.jpg"

เวอร์ชั่นเก่า

tell application "System Events" to keystroke "#" using command down

ฉันจินตนาการว่าสิ่งนี้จะยังคงถูกตี แต่ AppleScript แบบเก่าทำแบบจำลองที่น่าชื่นชมของความกระชับสำหรับอันนี้

หยุดควินินของคุณ

do shell script "screencapture -c"

3
ฉันคิดว่า quine ตามคำนิยามผลิตรหัสแหล่งที่มาของมันเป็นเพียงการส่งออก แต่ไม่แน่ใจว่าควรจะใช้กับคำถามนี้ nyx.net/~gthompso/quine.htm
duci9y

ใช่ฉันจริง ๆ แล้วพยายามหาวิธีที่จะเลือกเฉพาะพื้นที่โค้ดของหน้าต่างของตัวเอง แต่ฉันคิดว่าฉันจะไปข้างหน้าและโยนสิ่งนี้เพื่อปลูกธงของฉันในดินแดน AppleScript
Jonathan Van Matre

ฉันกำลังพิจารณาสิ่งนี้ว่าถูกต้องและคาดหวังอะไรแบบนี้
Pureferret

ไม่ได้เป็นควินอย่างเข้มงวด (ไม่ได้สร้างซอร์สโค้ดเองโดยทางโปรแกรม)
nitro2k01

3
ในทางเทคนิคแล้วสิ่งเหล่านี้ไม่สามารถเป็นข้อ จำกัดอย่างเข้มงวดยกเว้นคำตอบของ Piet เนื่องจากภาษาเหล่านี้ไม่ได้ถ่ายภาพเป็นซอร์สโค้ด แต่ฉันก็ยังมุ่งมั่นที่จะสร้างเวอร์ชั่นของฉันที่เข้มงวดยิ่งขึ้น :)
Jonathan Van Matre

8

Mathematica, 83

SelectionMove[InputNotebook[],Previous,Cell];Rasterize@NotebookRead@SelectedCells[]

ป้อนคำอธิบายรูปภาพที่นี่


1
ไม่ได้เป็นควินอย่างเข้มงวด (ไม่ได้สร้างซอร์สโค้ดเองโดยทางโปรแกรม)
nitro2k01

1
ไม่ทำงานหากไม่มีส่วนหน้า (ในmathหรือMathKernel) แม้จะ<<JavaGraphics`นำเข้าแล้ว
Ruslan

8

Sh, X & ImageMagick 18.9:

 import -window root a.jpg

สิ่งนี้จะทำงานในเชลล์ที่มี ImageMagick

หากต้องการพิมพ์เฉพาะรหัสเสริมที่clear &&ออกมาที่ 26.1

clear && import -window root a.jpg

ตัวอย่างผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่


ผ่านการทดสอบบนคอมพิวเตอร์ของฉันมันใช้งานได้
user12205

4
ไม่ได้ทำงานให้ฉันบนคอนโซลลินุกซ์ คุณอาจต้องการเพิ่มXลงในข้อกำหนด
Ilmari Karonen

2
ไม่ได้เป็นควินอย่างเข้มงวด (ไม่ได้สร้างซอร์สโค้ดเองโดยทางโปรแกรม)
nitro2k01

1
@nitro ฉันอาจใช้คำว่า 'Quine' ในทางที่ผิด แต่บรรทัดแรกของโพสต์ของฉันกล่าวถึงเฉพาะการแสดงภาพของซอร์สโค้ด ตอนนี้ฉันกำลังแก้ไขเพื่อชี้แจงจุดประสงค์ดั้งเดิมของฉันและเพื่อให้ได้รับประโยชน์อย่างแท้จริง / เข้มงวดมาก
Pureferret

1
แค่อยากรู้ฉันเห็นกระเป๋าเงิน bitcoin และ litecoin; มัน ~ 3 ปีต่อมาตอนนี้ผลกำไรที่จริงจัง? : D
Albert Renshaw

5

HTML5 / Javascript: 615

<canvas id='i' width=500 height=5000></canvas><script>function d(){var e=document.getElementById("i");var t=e.getContext("2d");t.font="20px Arial";var n=400;var r=25;var i=(e.width-n)/2;var s=60;str="<canvas id='i' width=5000 height=500></canvas>\n<script>"+d+"d();"+wrapText+"<\/script>";wrapText(t,str,i,s,n,r)}function wrapText(e,t,n,r,i,s){var o=t.split(" ");var u="";for(var a=0;a<o.length;a++){var f=u+o[a]+" ";var l=e.measureText(f);var c=l.width;if(c>i&&a>0){e.lineWidth=1;e.strokeStyle="blue";e.strokeText(u,n,r);u=o[a]+" ";r+=s}else{u=f}}e.lineWidth=1;e.strokeStyle="blue";e.strokeText(u,n,r)}d()</script>

สาธิต: http://jsfiddle.net/E2738/2/

หนึ่งสามารถคลิกขวาที่ภาพและบันทึกเป็น PNG


2
มันจบลงด้วย<//script>
ไม่ใช่ว่า Charles

1
ในตอนท้ายของบรรทัดที่ 11 ในซอเปลี่ยน+wrapText+"<//script>";เป็น+wrapText+"<\/script>";
ลุค

@ Charles ขอบคุณที่ชี้ให้เห็น คงที่
ไคลด์ Lobo

4

Java, 570 - 10% - 15% = 427.5

( "filepath" รวม) 554 - 10% - 15% = 415.5 ( "filepath" ไม่รวม)
ขอบคุณที่ Andreas สำหรับการลบBufferedImageในjava.awt.image.BufferedImage

import java.awt.image.*;class Q{public static void main(String[]a)throws Exception{BufferedImage i=new BufferedImage(3500,12,1);String s="import java.awt.image.*;class Q{public static void main(String[]a)throws Exception{BufferedImage i=new BufferedImage(3500,12,1);String s=%s%s%s;char q=34;i.getGraphics().drawString(String.format(s,q,s,q,q,q,q,q),0,9);javax.imageio.ImageIO.write(i,%spng%s,new java.io.File(%sfilepath%s));}}";char q=34;i.getGraphics().drawString(String.format(s,q,s,q,q,q,q,q),0,9);javax.imageio.ImageIO.write(i,"png",new java.io.File("filepath"));}}

เอาท์พุท:ป้อนคำอธิบายรูปภาพที่นี่

หากต้องการดูอย่างเหมาะสมดูลิงค์นี้: http://i.stack.imgur.com/RRSDw.png

วิธีนี้ใช้งานได้เหมือนควินินปกติยกเว้นมันจะส่งออกไปยังรูปภาพ รูปแบบปัจจุบันคือpngแต่รูปแบบสามารถเปลี่ยนแปลงได้อย่างง่ายดายโดยแทนที่อินสแตนซ์ทั้งหมดpngในโปรแกรมด้วยรูปแบบที่คุณต้องการ

ซึ่งแตกต่างจากคำตอบไม่กี่ที่นี่เป็น quine จริง ไม่มีการอ่านไฟล์โปรแกรม


คุณสามารถกำจัดอักขระอีก 24 ตัวหากคุณแทนที่ "java.awt.image.BufferedImage" ด้วย "java.awt.image. *"
Andreas

4

Javascript + JQuery 153 148

ปกติ

(function f(){
  c=$('<canvas/>')[0];
  a=c.getContext('2d');
  l=('('+f+')()').split('\n');
  for(i=0;i<l.length;i++)
    a.fillText(l[i],5,12*(i+1));
  $('body').append('<img src="'
      +c.toDataURL("image/png")+'"/>')
})()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

แข็งแรงเล่นกอล์ฟ

function f(){c=$('<canvas>')[0];c.width=750;a=c.getContext('2d');a.fillText(f+'f()',5,9);$('body').append('<img src="'+c.toDataURL("png")+'"/>')}f()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


1
ไม่ได้เป็นควินอย่างเข้มงวด (ไม่ได้สร้างซอร์สโค้ดเองโดยทางโปรแกรม)
nitro2k01

$? คุณใช้ jQuery ด้วยหรือเปล่า?
ไคลด์ Lobo

@ ClydeLobo Yup ดูเหมือนว่าเขาเป็น เดี๋ยวก่อนคุณสามารถทำ Javascript ได้โดยไม่ต้อง JQuery? ใครมีความคิด!
Pierre Arlaud

@ClydeLobo ใช่ฉันเป็น แต่ควรอนุญาตให้ใช้ห้องสมุด มันไม่แตกต่างจากโปรแกรม C ที่ใช้stdio.hxD การเขียนโปรแกรมโดยไม่ใช้ jQuery นั้นเป็นเรื่องง่าย เพียงแค่เปลี่ยน$('<canvas/>')[0]กับdocument.createElement('canvas')และกับ$('body').append document.writejQuery บันทึกฉันด้วยไบต์
aebabis

3

zsh, 57 × 0.9 = 51.3

ส่งชื่อไฟล์เอาต์พุตเป็นอาร์กิวเมนต์

convert -annotate +0+10 "$(<$0)" -size 320x14 xc:white $1

ผลิต:

ตัวอย่างผลลัพธ์


1
zsh หรือ imagemagick นั้นคืออะไร
Kaya

@Kaya: เอ่อทั้งคู่ ภาษาคือ zsh (หรือ bash แต่ไม่ใช่ Posix) และไลบรารี่ / เครื่องมือคือ ImageMagick (หรือ GraphicsMagick หากคุณต้องการ) - เช่น PHP กับ GD หรือ Ruby กับ RMagick
Ry-

1
@Pureferret: เพิ่มแล้ว
Ry-

ไม่ได้เป็นควินอย่างเข้มงวด (ไม่ได้สร้างซอร์สโค้ดเองโดยทางโปรแกรม)
nitro2k01

3

C99 (ใช้ SDL และ SDL_ttf), 414 354 346 - 15% = 294.1

#include<SDL_ttf.h>
#define Q(P)char*q=#P;P
Q(
i=5;main(){for(SDL_Surface*s=SDL_SetVideoMode(2048,80,SDL_Init(SDL_INIT_VIDEO),TTF_Init());i--;SDL_SaveBMP(s,"q.bmp"))SDL_BlitSurface(TTF_RenderText_Blended(TTF_OpenFont("q.ttf",9),(char*[]){"#include<SDL_ttf.h>","#define Q(P)char*q=#P;P","Q(",q,")"}[i],(SDL_Color){~0}),0,s,&(SDL_Rect){0,16*i});}
)

นี่ค่อนข้างน่าเกลียดโดยไม่มีการขึ้นบรรทัดใหม่ แต่น่าเสียดายที่พวกเขาต้องหายไป ฟังก์ชั่นการแสดงผลข้อความไม่ได้ควบคุมตัวอักษรเลยดังนั้นการแบ่งบรรทัดใด ๆ ในรหัสจะต้องมีการแสดงผลด้วยตนเองในผลลัพธ์

นี่คือรหัสเดียวกัน แต่มีการแบ่งบรรทัดพิเศษบางส่วนที่ถูกโยนเพื่อความชัดเจน:

#include<SDL_ttf.h>
#define Q(P)char*q=#P;P
Q(
i=5;main(){for(SDL_Surface*s=SDL_SetVideoMode(2048,80,
SDL_Init(SDL_INIT_VIDEO),TTF_Init());i--;SDL_SaveBMP(s,"q.bmp"))
SDL_BlitSurface(TTF_RenderText_Blended(TTF_OpenFont("q.ttf",9),
(char*[]){"#include<SDL_ttf.h>","#define Q(P)char*q=#P;P","Q(",q,")"}[i],
(SDL_Color){~0}),0,s,&(SDL_Rect){0,16*i});}
)

น่าเศร้าที่นี่ไม่ได้เพิ่มตัวแบ่งบรรทัดลงในเอาต์พุตกราฟิก:

เอาท์พุต

เอาต์พุตยังคงชัดเจน แต่ด้วยเอาต์พุต 9 จุดและสีฟอนต์สีแดง คุณสามารถปรับปรุงค่าใช้จ่ายของตัวละครโดยการแทนที่ด้วย9 12(โปรดทราบว่าขนาดของภาพที่ได้รับการ hardcoded เพื่อ 2048x80 เพื่อรองรับความแตกต่างในแบบอักษรต่างๆได้มีการเพิ่มบิตส่วนเกินที่พอเหมาะลงในระยะขอบด้านขวาและส่วนนำที่เพียงพอเพื่อให้แบบอักษรขนาด 12 ยังคงพอดี อย่างไรก็ตามหากคุณต้องการเพิ่มขนาดเพิ่มเติมอีกมิติอาจจำเป็นต้องเปลี่ยนแปลงเช่นกัน)

คำสั่งในการสร้างโปรแกรมคือ:

gcc -Wall -o imgquine imgquine.c -lSDL_ttf `sdl-config --cflags --libs`

โปรแกรมสันนิษฐานว่ามีไฟล์ฟอนต์ที่เรียกว่าq.ttfในไดเรกทอรีปัจจุบันเมื่อเรียกใช้ ฉันดูแลเรื่องนี้ล่วงหน้าโดยใช้คำสั่งต่อไปนี้ (ซึ่งควรทำงานบน Linux ที่ทันสมัยที่สุด):

ln -s `fc-match --format='%{file}' sans` ./q.ttf

(อย่าลังเลที่จะนำเข้าแบบอักษร TrueType ที่คุณชื่นชอบแทน)

q.bmpหลังจากที่ใช้โปรแกรมการส่งออกภาพจะถูกสร้างขึ้นในไดเรกทอรีปัจจุบันในไฟล์ชื่อ น่าเสียดายที่ไฟล์บิตแมปของ Windows เป็นรูปแบบผลลัพธ์เฉพาะที่โปรแกรมนี้มีให้ การเพิ่มรูปแบบเอาต์พุตเพิ่มเติมจะต้องมีการลิงก์ในไลบรารีมากขึ้น

โปรดทราบว่าโปรแกรมนี้ใช้ประโยชน์จากไวยากรณ์ของ C99 สำหรับการแนะนำค่าตัวอักษรที่ไม่ง่ายจึงช่วยลดจำนวนของตัวแปรที่จำเป็นต้องกำหนดอย่างมีนัยสำคัญ นี่คือสิ่งที่นักกอล์ฟ C ควรใช้ประโยชน์จาก


2

C # - 498 - 15% = 423.3

นี่อาจเป็นเรื่องของกอล์ฟมากกว่า ฉันไม่เคยทำแบบฝึกหัดหรือกราฟิกประเภทนี้ใน C # มาก่อน:

using System;using System.Drawing;class Q{static void Main(){var b = new Bitmap(3050, 20);var g=Graphics.FromImage(b);string f="using System;using System.Drawing;class Q{{static void Main(){{var b = new Bitmap(3050, 20);var g=Graphics.FromImage(b);string f={0}{1}{0},e={3}{0}{2}{0};g.DrawString(String.Format(f,(char)34,f,e,'@'),SystemFonts.MenuFont,Brushes.Black,0,0);b.Save(e);}}}}",e=@"D:\p.png";g.DrawString(String.Format(f,(char)34,f,e,'@'),SystemFonts.MenuFont,Brushes.Black,0,0);b.Save(e);}}

เอาท์พุท: ป้อนคำอธิบายรูปภาพที่นี่

การเพิ่มรูปแบบการสนับสนุนที่แตกต่างกันจะเป็นเรื่องง่าย ไม่แน่ใจว่ามันคุ้มค่าหรือไม่


2

Ruby, 104 ตัวอักษร

require "RMagick"
include Magick
Draw.new.annotate(i=Image.new(999,99),0,0,0,9,File.read($0))
i.display

ตัวอย่างเอาต์พุตต่อคำขอ: i.imgur.com/jMC594C.png


คุณมีตัวอย่างผลลัพธ์หรือไม่?
Pureferret

@Pureferret ดูการแก้ไข
Shelvacu

1
ไม่ได้เป็นควินอย่างเข้มงวด (ไม่ได้สร้างซอร์สโค้ดเองโดยทางโปรแกรม)
nitro2k01

1

Python: 255 238 -10% -15% = 195.075 182.07

import sys,PIL.ImageDraw as D;i=D.Image.new('L',(2000,20));r="import sys,PIL.ImageDraw as D;i=D.Image.new('L',(2000,20));r=%r;D.Draw(i).text((0,0),r%%r,fill=255);i.save(sys.argv[1])";D.Draw(i).text((0,0),r%r,fill=255);i.save(sys.argv[1])

การใช้งาน:

python imgquine.py quine.jpg

นี่คือ quine จริงที่ดึงเอาท์พุทไปยังไฟล์ที่ระบุใน commandline รูปแบบไฟล์ถูกตั้งค่าง่ายๆโดยการเปลี่ยนนามสกุลไฟล์ (เช่นquine.jpgสำหรับ JPEG และquine.pngPNG)

ตัวอย่างผลลัพธ์ (ภาพขนาด 2000x20):

Quine output


คุณสามารถบันทึกตัวอักษรบางอย่างโดยใช้แทน2e3 2000
Kaya

@Kaya: ไม่ฉันไม่สามารถทำได้ขออภัย2e3เป็น: floatและImage.newต้องการints
nneonneo

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