@オレンジ планы изменились? Как? Он до сих пор сердце ее Ильи. Что заставило его предпочесть Рин за Ильи? Также стоит отметить, что это работает только на Planeswalker-ов с "+1" способность, которая не убивает ваших или вашего оппонента. Не предназначены для работы на трубах не означает, что я не могу работать на трубы. Что делать, если приложение просто делает SEEK_END, чтобы добраться до конца файла? Или может его делают SEEK_CUR, чтобы найти текущее местоположение. Ни один из них вызывает никаких вопросов, если бы я лгал программы о результатах поиска. Единственное место, что будет перерыв, если приложение пытается вернуться и перезаписать уже записанные данные, которые он не должен делать с файлами журнала. И да, я осознаю одно-процесс-в-трубе ограничений. Это не будет проблемой.

TXR как awk макрос: мы можем на самом деле сделать это, как введенные операции: получение данных в значения с плавающей точкой, пол их вниз до ближайшего целого числа, умножить на сто, преобразовать в целое число.

Однако, давайте остановимся на миг и поразмыслить, что это может быть плохой идеей, если значения настолько велики, что они не могут быть усечены до ближайшего целого; это текст-мудрый будет правильным для сколь угодно больших значений.

$ txr -е '(на awk (:начало (комплект фут #/и\D+.\д+/))
 ((МФ tofloat пол toint (* 100))))'
(4567.99, 123.45, мусор 3.1415, 1.0 ...) х
456700 12300 300 100

В фут переменная-это новая функция; классический awk и не имеет аналогов. А ФС как ФС (разделитель полей), фут означает "поле маркировки": он задает положительное регулярное выражение, которое распознает и извлекает поля, игнорируя несовпадающие вещи между ними.

По иронии судьбы футов может напрямую выразить семантику по умолчанию разделитель полей в awk: обрезка начальные и конечные символы новой строки и пробелы из записи и разделения на одну или несколько строк или пробелов. Это в точности эквивалентно просто положительно признавая полей маркеров, состоящий из номера-заготовки! Если на awk было футов переменной, он не нужен специальный хак, который применяется при ФС равняется один пробел; дефолт может быть, что ПС не установлен, и ФК задано регулярное выражение [ \т\н]+.

Мы используем простой фут , который распознает цифры, обязательная десятичная и обязательных цифр. Нет знака, нет дополнительных деталей.

В ПВ макрос ("карта поля") ставит каждого поля через трубопровод операций. Во-первых, tofloat функции для преобразования строк в числа с плавающей точкой. Затем пол усекается до ближайшего целого в сторону отрицательной бесконечности. toint возвращает нас к Ингер и (* 100) обозначает частичное применение * к 100: функция, которая принимает дополнительные аргументы и умножает 100 своих продуктов. Это частичное применение синтаксиса следует из того, что МФ аргументы неявно рассматриваются как ОП синтаксис: TXR сюсюкать явное частичное применение оператора.

С МФ возвращает ненулевой результат, действие по умолчанию (ПРН) ногами к печати обновленную отдых, который вновь образованному catenating обновленных полях со стандартным ОФС , состоящий из одного пробела, и вывода ОРС , которая по умолчанию строки.

Вот способ сделать это численно, но не опираясь на математические вычисления с плавающей точкой. В принципе мы можем извлечь полей с использованием того же регулярного выражения, а затем удалить точки, пока они еще текст. Затем перейдите к Integer и использовать усек целочисленного деления и умножения:

 $ txr -е '(на awk (:начало (комплект фут #/и\D+.\д+/))
 ((МФ (remq #\.) toint (ОТБр @1 100) (* 100))))'

Поскольку целые числа могут быть сколь угодно большими на этом языке, это решение не страдают от проблем из-за цифры большие, но сводит к минимуму обработку текстов.