- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于那些不熟悉游戏的人。你有 8 个数字,你必须使用 +、-、/和 * 来达到目标。
因此,如果目标是 254,而您的游戏号码是 2, 50, 5, 2, 1,那么您可以正确回答问题,说 5 * 50 = 250。那么 2+2 就是 4。加上它,得到 254。
部分游戏视频如下:
Video 1
video 2
基本上,我通过为数字和符号的所有烫发生成所有大小的所有烫发来强制使用游戏,并使用基本的 inflix 计算器来计算解决方案。
然而它包含一个缺陷,因为所有的解决方案都是这样解决的:((((1+1)*2)*3)*4)。它不会排列括号,这让我很头疼。
因此我无法解出所有方程。例如,给定
目标 16 和数字 1,1,1,1,1,1,1,1 在它应该执行 (1+1+1+1)*(1+1+1+1)=16 时失败。
我会喜欢有人可以帮助完成这个......用任何语言。
这是我到目前为止所写的:
#!/usr/bin/env perl
use strict;
use warnings;
use Algorithm::Permute;
# GAME PARAMETERS TO FILL IN
my $target = 751;
my @numbers = ( '2', '4', '7', '9', '1', '6', '50', '25' );
my $num_numbers = scalar(@numbers);
my @symbols = ();
foreach my $n (@numbers) {
push(@symbols, ('+', '-', '/', '*'));
}
my $num_symbols = scalar(@symbols);
print "Symbol table: " . join(", ", @symbols);
my $lst = [];
my $symb_lst = [];
my $perms = '';
my @perm = ();
my $symb_perms = '';
my @symb_perm;
my $print_mark = 0;
my $progress = 0;
my $total_perms = 0;
my @closest_numbers;
my @closest_symb;
my $distance = 999999;
sub calculate {
my @oprms = @{ $_[0] };
my @ooperators = @{ $_[1] };
my @prms = @oprms;
my @operators = @ooperators;
#print "PERMS: " . join(", ", @prms) . ", OPERATORS: " . join(", ", @operators);
my $total = pop(@prms);
foreach my $operator (@operators) {
my $x = pop(@prms);
if ($operator eq '+') {
$total += $x;
}
if ($operator eq '-') {
$total -= $x;
}
if ($operator eq '*') {
$total *= $x;
}
if ($operator eq '/') {
$total /= $x;
}
}
#print "Total: $total\n";
if ($total == $target) {
#print "ABLE TO ACCURATELY SOLVE WITH THIS ALGORITHM:\n";
#print "PERMS: " . join(", ", @oprms) . ", OPERATORS: " . join(", ", @ooperators) . ", TOTAL=$total\n";
sum_print(\@oprms, \@ooperators, $total, 0);
exit(0);
}
my $own_distance = ($target - $total);
if ($own_distance < 0) {
$own_distance *= -1;
}
if ($own_distance < $distance) {
#print "found a new solution - only $own_distance from target $target\n";
#print "PERMS: " . join(", ", @oprms) . ", OPERATORS: " . join(", ", @ooperators) . ", TOTAL=$total\n";
sum_print(\@oprms, \@ooperators, $total, $own_distance);
@closest_numbers = @oprms;
@closest_symb = @ooperators;
$distance = $own_distance;
}
$progress++;
if (($progress % $print_mark) == 0) {
print "Tested $progress permutations. " . (($progress / $total_perms) * 100) . "%\n";
}
}
sub factorial {
my $f = shift;
$f == 0 ? 1 : $f*factorial($f-1);
}
sub sum_print {
my @prms = @{ $_[0] };
my @operators = @{ $_[1] };
my $total = $_[2];
my $distance = $_[3];
my $tmp = '';
my $op_len = scalar(@operators);
print "BEST SOLUTION SO FAR: ";
for (my $x = 0; $x < $op_len; $x++) {
print "(";
}
$tmp = pop(@prms);
print "$tmp";
foreach my $operator (@operators) {
$tmp = pop(@prms);
print " $operator $tmp)";
}
if ($distance == 0) {
print " = $total\n";
}
else {
print " = $total (distance from target $target is $distance)\n";
}
}
# look for straight match
foreach my $number (@numbers) {
if ($number == $target) {
print "matched!\n";
}
}
for (my $x = 1; $x < (($num_numbers*2)-1); $x++) {
$total_perms += factorial($x);
}
print "Total number of permutations: $total_perms\n";
$print_mark = $total_perms / 100;
if ($print_mark == 0) {
$print_mark = $total_perms;
}
for (my $num_size=2; $num_size <= $num_numbers; $num_size++) {
$lst = \@numbers;
$perms = new Algorithm::Permute($lst, $num_size);
print "Perms of size: $num_size.\n";
# print matching symb permutations
$symb_lst = \@symbols;
$symb_perms = new Algorithm::Permute($symb_lst, $num_size-1);
while (@perm = $perms->next) {
while (@symb_perm = $symb_perms->next) {
calculate(\@perm, \@symb_perm);
}
$symb_perms = new Algorithm::Permute($symb_lst, $num_size-1);
}
}
print "exhausted solutions";
print "CLOSEST I CAN GET: $distance\n";
sum_print(\@closest_numbers, \@closest_symb, $target-$distance, $distance);
exit(0);
[15:53: /mnt/mydocuments/git_working_dir/countdown_solver$] perl countdown_solver.pl
Symbol table: +, -, /, *, +, -, /, *, +, -, /, *, +, -, /, *, +, -, /, *, +, -, /, *, +, -, /, *, +, -, /, *Total number of permutations: 93928268313
Perms of size: 2.
BEST SOLUTION SO FAR: (2 + 4) = 6 (distance from target 751 is 745)
BEST SOLUTION SO FAR: (2 * 4) = 8 (distance from target 751 is 743)
BEST SOLUTION SO FAR: (4 + 7) = 11 (distance from target 751 is 740)
BEST SOLUTION SO FAR: (4 * 7) = 28 (distance from target 751 is 723)
BEST SOLUTION SO FAR: (4 * 9) = 36 (distance from target 751 is 715)
BEST SOLUTION SO FAR: (7 * 9) = 63 (distance from target 751 is 688)
BEST SOLUTION SO FAR: (4 * 50) = 200 (distance from target 751 is 551)
BEST SOLUTION SO FAR: (7 * 50) = 350 (distance from target 751 is 401)
BEST SOLUTION SO FAR: (9 * 50) = 450 (distance from target 751 is 301)
Perms of size: 3.
BEST SOLUTION SO FAR: ((4 + 7) * 50) = 550 (distance from target 751 is 201)
BEST SOLUTION SO FAR: ((2 * 7) * 50) = 700 (distance from target 751 is 51)
BEST SOLUTION SO FAR: ((7 + 9) * 50) = 800 (distance from target 751 is 49)
BEST SOLUTION SO FAR: ((9 + 6) * 50) = 750 (distance from target 751 is 1)
Perms of size: 4.
BEST SOLUTION SO FAR: (((9 + 6) * 50) + 1) = 751
最佳答案
关于perl - 帮我完成应用程序的最后一部分?它通过暴力破解每个可能的方程来解决第 4 channel 上的任何倒计时数字游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5938861/
在我的一门类(class)中,我接到了一项家庭作业,要求我们在谷歌上搜索 Metapost 语言并找到该语言中方程求解功能的用途。 在浏览了 Metapost 用户手册的前十多页后,我发现只有一个原因
你能帮我在 this page 上的谷歌图表上隐藏趋势线上的工具提示(方程)吗? ? 谢谢 以下是我正在使用的图表选项: var options = { title: 'Weight
我正在尝试将 TeXWorks 编辑器配置为使用与 TeXMaker 相同的语法着色。但是,TexWorks 使用正则表达式来指定应该着色的内容。不幸的是,它没有数学的默认设置。 我想匹配 $ 之间的
我刚开始玩 GHCi。我看到列表生成器基本上解决了给定集合中的方程式: Prelude> [x | x [0.01,0.2..2.0] [1.0e-2,0.2,0.39,0.580000000000
是否有可以使用的图形表达式生成器或方程编辑器的 Java 开源实现? 最好有在线演示,或者至少有屏幕截图。 最佳答案 取决于方程的类型。 如果您正在考虑简单的多项式,您可以尝试 Java Expres
我有四个文本输入字段,在用户输入相关值后,我必须进行 JavaScript 计算以将它们全部相加 我使用: var total = Number(value1) + Number(value2) +
为什么这段代码有两个不同的输出(GCC 4.5.1)(我已经评论了重要的行): int main() { bool a = 1; bool b = 1; bool c = 1;
如果标题含糊不清,我深表歉意,但我不知道如何为我的情况命名。我正在为使用 GPS 的 iPhone 编写一个应用程序。在 didUpdateLocations: 方法中,我针对任意大小的变量测试位置的
我正在尝试计算表中学生的 BMI,四舍五入到三位数: +-------+--------+--------+ | fname | weight | height | +-------+--------
我们可以使用 deSolve R 中的常微分方程 (ODE) 包,但是,我找不到解决两个嵌套 ODE 方程的方法,假设` b'(t) = beta - k*b(t); a'(t) = alpha -b
我有一个 boolean 方程,想简化它。帮忙解决一下。 bool needLoad = isA || (!isA && !isB); 之后我使用 if (needLoad){ if (
我很感兴趣,建模工具(在我的例子中是 OpenModelica 和 Dymola - 建模语言 Modelica)如何求解方程组(线性和/或非线性)。这些工具专为求解微分代数方程而设计。我知道一点将微
Julia:当我有绘图时如何找到最佳拟合曲线/方程?我有一个用 map 绘制的图,但我需要找到一个适合它的二次方程? 最佳答案 正如评论中所说,有一个情节在这里并不真正相关;只有数据本身是。您可以使用
我一直在尝试将像 100, 45 这样的输入放入文本框中,并通过单击按钮通过我的方程式运行它,但我不知道该怎么做。单击按钮后,它应该发布答案作为警报。请帮忙。谢谢。 function Rad(a, b
Julia:当我有绘图时如何找到最佳拟合曲线/方程?我有一个用 map 绘制的图,但我需要找到一个适合它的二次方程? 最佳答案 正如评论中所说,有一个情节在这里并不真正相关;只有数据本身是。您可以使用
有人可以向我解释为什么下面的代码会打印字符“u”吗? int p = 9; int q = 5; int r = p - q; double x = p; double y = q; St
我想以某种方式缩短我的 ODE 方程,因为否则代码会变得困惑。我尝试过使用辅助函数,例如这里的 fe() ,但这不起作用。下面的代码只是一个例子,欢迎任何建议!谢谢! # Import the req
我无法创建正确的文件。程序中的方程不会迭代,它只会根据请求的数量写入相同的总和。 for 循环。 #include #include #include #define LEN 256 int m
我有 2 个指向一些 Point 结构的指针。我想计算两点之间的距离(我不需要计算它的根)所以我有这个: w[0]=X[l]; w[1]=X[l+1]; d=m(w[0]->x
我有一个具有 CSV 上传功能的网站,它将 CSV 中的所有内容推送到临时表,然后分成较小的表。 目前,我有一个显示页面,在 HTML 表格中显示所有这些信息。然而,有些部分需要有公式化的表示。换句话
我是一名优秀的程序员,十分优秀!