我想打印真值表到一个表在一个adt文件,没有一个程序,但我不知道如何得到淡水河或值打印到odt文件,这个程序只是打印结果在屏幕上!
sub truth_table {
my $s = shift;
#print "$s\n";
my @vars;
for ($s =~ /([a-zA-Z_]\w*)/g) {
push @vars, $_ ;
}
#print "$s\n";
#print "$_\n";
#print Dumper \@vars;
#print "\n", join("\t", @vars, $s), "\n", '-' x 40, "\n";
#print Dumper \@vars;
@vars = map("\$$_", @vars);
$s =~ s/([a-zA-Z_]\w*)/\$$1/g;
$s = "print(".join(',"\t",', map("($_?'1':'0')", @vars, $s)).",\"\\n\")";
$s = "for my $_ (0, 1) { $s }" for (reverse @vars);
eval $s;
}
truth_table 'A ^ A_1';
使用Capture::Tiny获取eval
的结果,然后将字符串拆分为一个基于https://stackoverflow.com/a/4226073/5100564的二维数组。
use Capture::Tiny 'capture_stdout';
sub truth_table {
#...the rest of your code here...
my $stdout = capture_stdout {
eval $s;
};
return $stdout;
}
$truth_string = truth_table 'A ^ A_1';
my @truth_array;
foreach my $line (split "\n", $truth_string) {
push @truth_array, [split ' ', $line];
}
foreach my $line (@truth_array) {
foreach my $val (@$line) {
print $val;
}
print "\n";
}
为了使其工作,我根据安装缺少的Perl模块的最简单方法执行了以下命令?
cpan
install Capture::Tiny
但是,我将在LibreOffice中使用Python宏来解决这个问题。APSO使输入和运行这段代码变得很方便。
import uno
from itertools import product
def truth_table():
NUM_VARS = 2 # A and B
columns = NUM_VARS + 1
rows = pow(2, NUM_VARS) + 1
oDoc = XSCRIPTCONTEXT.getDocument()
oText = oDoc.getText()
oCursor = oText.createTextCursorByRange(oText.getStart())
oTable = oDoc.createInstance("com.sun.star.text.TextTable")
oTable.initialize(rows, columns)
oText.insertTextContent(oCursor, oTable, False)
for column, heading in enumerate(("A", "B", "A ^ B")):
oTable.getCellByPosition(column, 0).setString(heading)
row = 1 # the second row
for p in product((0, 1), repeat=NUM_VARS):
result = truth_function(*p)
for column in range(NUM_VARS):
oTable.getCellByPosition(column, row).setString(p[column])
oTable.getCellByPosition(column + 1, row).setString(result)
row += 1
def truth_function(x, y):
return pow(x, y);
g_exportedScripts = truth_table,
以这种方式使用product
的基础是为Python中的任何表达式创建真值表。
有关Python-UNO的更多文档,请访问https://wiki.openoffice.org/wiki/python。
我正在尝试使用docx4j将word文件转换为pdf,到目前为止我已经成功地转换了doc和docx文件,但是当我尝试加载odt文件时,我得到并且通过使用zip打开odt文件,我可以看到文件(但不是)
问题内容: 我已经搜索过,但我只能找到有关另一种方式的问题:将stdin写入文件:) 有没有一种快速简便的方法将文件内容转储到stdout? 问题答案: 当然。假设您有一个字符串,文件名为,下面的技巧就可以了。
问题内容: 我想将数组打印到文件中。 我希望文件看起来像这样的代码完全相似。 假设$ abc是一个数组。 是否有任何一种解决方案,而不是每次外观都是常规的。 PS-我目前使用序列化,但是我想使文件可读,因为使用序列化数组很难读取。 问题答案: 无论是或将返回输出,而不是打印出来的。 PHP手册中的示例 然后,您可以使用保存。或在写入文件时直接将其返回:
问题内容: 如何将Java输出同时输出到Shell控制台和某个文件中?那可能吗? 问题答案: 您可以在程序的开头包含以下几行:
问题内容: 我有一个文本文件,需要将其打印到特定的网络打印机。我知道打印机的名称。 到目前为止,我已经创建了Printable类来打印文件(票证)。 我这样称呼TicketPrintPage: 它的工作原理还不错,但是: -我的文本不多于一页(找到了一些算法,但是很好) -我不知道打印机何时完成打印,如果我尝试打印两页如果打印机连续打印了多张票证,则会返回“打印机未就绪”消息。 所以问题又来了:没
问题内容: 我遇到了这种语法: 这个带有两个点的语法是什么? 在哪里可以找到有关它的信息? 它仅适用于布尔值还是以其他不同方式实现? 问题答案: 是条件运算符。(不只是一部分,整个方法参数是示例中条件运算符的一种用法。) 它通常被称为三元运算符,但这只是其本质的一个方面-具有三个操作数- 而不是其名称。如果在Java中引入了另一个三元运算符,则该术语将变得模棱两可。之所以称为条件运算符,是因为它有