X відзначає місце - завдання друку


10

Давши два числа, надрукуйте сторінку із знаком "X" у вказаному місці (± 10%).

Числа повинні бути або відсотки або частки розмірів друку площі + сторінки, наприклад , [25,75]або , ["15%","0%"]або [0.33,1]. Вам не доведеться враховувати маржу. Просто пам’ятайте, що вказати, яке число є шириною, а яке - висотою, і який кут - це походження.

Ви, звичайно, можете припустити, що принтер підключений, і будь-який віртуальний принтер теж враховує. Насправді, можливо, ви захочете встановити принтер PDF як принтер за замовчуванням перед початком цього виклику.

Ви можете створити файл для друку (наприклад, PDF) і надіслати його на віртуальний принтер, що, в свою чергу, створює ваш результат PDF, але ви не можете безпосередньо створити остаточний PDF. Це має бути належним завданням друку.

Якщо можливо, додайте фотографію, сканування або знімок екрана або отримайте посилання на онлайн-документ. Зауважте, що Imgur приймає PDF-файли.

Звичайно, ви отримаєте більше результатів, якщо фактично розмістите X, а не виведете нові рядки та пробіли з передбачуваним розміром шрифту та паперу.

Приклад

Для висоти вводу 75% і ширини 25%, зверху зліва надрукуйте наступний документ:


[25,75]



Чи дозволяється нам читати файл зображення з будь-якого місця?
Бета-розпад

@BetaDecay Який файл зображення?
Адам

Зображення у вашому запитанні: i.stack.imgur.com/rfZeO.png
Beta Decay

@BetaDecay Ви повинні створити документ, а не читати зображення.
Адам

Який розмір паперу ми повинні використовувати / припускати, чи це має значення?
Стефан

Відповіді:


6

MacOS Bash + OfficeJet Pro 8600, 46

(yes ''|sed $[$2*3/5]q;printf %$[$1*4/5]sX)|lp

Походження - це верхній лівий кут.

Я зробив тестову роздруківку, щоб перевірити розміри символів того, що друкується lpна моєму принтері - це, здається, 82w x 64h, тому множинні відсотки (3) та 4/5 отримують відповідно до 10% допуску.

Результат, з введенням командного рядка 25 75:

введіть тут опис зображення


6
Ого, повинен бути першим фізичним об'єктом подання на PPCG.
Адам


1
@ Adám, що з цим ?
NoOneIs Here

1

APL (Dyalog) у Windows, 36 35 байт

Як аргумент береться анонімна функція (Y, X) у відсотках угорі зліва

{'X.'WC'Text'(2'X'WC'Printer')⍵}

Почнемо зі списку з трьох елементів:

{ анонімна функція (всі змінні локальні)

 аргумент, наприклад 75 25

( праворуч від

  'X'⎕WC'Printer'W indows C реагують на об'єкт принтера на ім'я X , повертаючись'#.X'

  2↓ киньте два символи, щоб отримати просто 'X'

) праворуч від

'Text' що ми додамо

'X.'⎕WCW indows C реагують на об'єкт X (тип, зміст, положення) , повертаючись'#.X'

} кінець функції (оскільки X локальний, він руйнується, коли функція припиняється, сигналізуючи Windows, що ми виконуємо завдання друку, через що Windows друкує її)


X @ 75 25


0

Java 8, 210 209 байт

-1 байт: змінено на синтаксис currying

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, 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:

Java Printing Test Case

(У мене немає фізичного принтера, але це все одно має працювати без проблем)


Дуже вражає. Навіщо вам це потрібно catch(Exception e){}?
Адам

@ Adám Тому що PrinterJob.print()кидає a, PrinterExceptionі я не бачив жодного способу його обійти.
Джастін Марінер

0

C #, 259 202 201 байт

namespace System.Drawing.Printing{w=>h=>{var p=new PrintDocument();p.PrintPage+=(s,e)=>e.Graphics.DrawString("X",new Font("Onyx",9),Brushes.Red,e.PageBounds.Width*w,e.PageBounds.Height*h);p.Print();};}

Onyx - це шрифт, встановлений на моїй машині Windows 10 за замовчуванням, де 4, здається, є найкоротшим ім'ям шрифту. Я перевірив це, виконавши наступне в C #, а потім перевірив blahу відладчику.

var blah = FontFamily.Families.GroupBy(o => o.Name.Length)
                              .OrderBy(g => g.Key);

Повна / відформатована версія:

namespace System.Drawing.Printing
{
    class P
    {
        static void Main(string[] args)
        {
            Func<float, Action<float>> f = w => h =>
            {
                var p = new PrintDocument();
                p.PrintPage += (s, e) =>
                    e.Graphics.DrawString("X", new Font("Onyx", 9), Brushes.Red,
                                          e.PageBounds.Width * w, e.PageBounds.Height * h);
                p.Print();
            };

            f(0.25f)(0.75f);
        }
    }
}

Тестовий випадок (0,25, 0,75):


Приклад документа

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.