ジャワ8、210の 209バイト
-1バイト:カリー化構文に変更されました
import java.awt.print.*;
x->y->{PrinterJob j=PrinterJob.getPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",(int)(p.getWidth()*x),(int)(p.getHeight()*y));return i;});try{j.print();}catch(Exception e){}};
入力をパーセントの浮動小数点バージョンとして受け取ります:0.25, 0.75
。
用紙サイズを8.5x11in(72dpi)と想定できる場合、184バイト
import java.awt.print.*;
x->y->{PrinterJob j=PrinterJob.getPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",x*612/100,y*792/100);return i;});try{j.print();}catch(Exception e){}};
PDFへの印刷にデフォルト値を使用します。パーセントの整数バージョンとして入力を受け取ります:25, 75
。
Windows OSも想定できる場合は177バイト
import sun.awt.windows.*;
x->y->{WPrinterJob j=new WPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",x*612/100,y*792/100);return i;});try{j.print();}catch(Exception e){}};
上記と同じ入力:25, 75
。
使用法
import java.awt.print.*;
...
Function<Double, Consumer<Double>> f =
x->y->{PrinterJob j=PrinterJob.getPrinterJob();j.setPrintable((g,p,i)->{g.drawString("X",(int)(p.getWidth()*x),(int)(p.getHeight()*y));return i;});try{j.print();}catch(Exception e){}};
...
f.apply(.25).accept(.75);
テストケース
入力用0.25, 0.75
:
(物理的なプリンターはありませんが、問題なく動作するはずです)