初学者的一些定义:flip(n) 是将七段显示字体编号旋转 180 度,因此七段字体中的 2 将翻转为 2。0,1,2,5,8 将是映射到自己。 6 -> 9、9 -> 6 和 3、4、7 未定义。因此,任何包含 3、4、7 的数字都不可翻转。更多示例:flip(112) = 211、flip(168) = 891、flip(3112) = 未定义。
(顺便说一下,我很确定 flip(1) 应该是未定义的,但是作业说 flip(168) = 891 所以关于这个赋值 flip(1) 是定义的)
原始挑战:找到满足以下三个条件的整数 n > 0:
您可以在下面找到的我们的解决方案似乎有效,但至少在 2011 年找不到答案。如果我改用 1991 年(我搜索了一些可以解决问题的“基本”数字)我很快得到一个答复,说 1515151 就是那个。因此,基本概念似乎有效,但不适用于家庭作业中给定的“基础”。 我是不是漏掉了什么?
用伪代码编写的解决方案(我们在 Small Basic 中有一个实现,我用 Java 做了一个多线程的):
for (i = 1; i < Integer.MaxValue; i++) {
n = i * 2011;
f = flip(n, true);
if (f != null && flip(n*n, false) != null) {
print n + " is the number";
return;
}
}
flip(n, symmetry) {
l = n.length;
l2 = (symmetry) ? ceil(l/2) : l;
f = "";
for (i = 0; i < l2; i++) {
s = n.substr(i,1);
switch(s) {
case 0,1,2,5,8:
r = s; break;
case 6:
r = 9; break;
case 9:
r = 6; break;
default:
r = "";
}
if (r == "") {
print n + " is not flippable";
return -1;
} elseif (symmetry && r != n.substr(l-i-1,1)) {
print n + " is not flip(n)";
return -1;
}
f = r + f;
}
return (symmetry) ? n : f;
}
最佳答案
启发式(公认的是最少的实验,主要依靠直觉),如果不优化您的搜索技术数学(例如,采用构造方法来构建一个完美的不包含 3、4、7 且可翻转对称的正方形。与优化计算相反,后者不会显着改变复杂性):
我将从满足 2 个条件的所有数字列表开始(数字和它的翻转是相同的,即翻转对称,并且它是 2011 的倍数),小于 10^11:
192555261 611000119 862956298 988659886 2091001602 2220550222 2589226852 6510550159 8585115858 10282828201 12102220121 18065559081 18551215581 19299066261 20866099802 22582528522 25288188252 25510001552 25862529852 28018181082 28568189582 28806090882 50669869905 51905850615 52218581225 55666299955 58609860985 59226192265 60912021609 68651515989 68828282889 69018081069 69568089569 85065859058 85551515558 89285158268 91081118016 92529862526 92852225826 95189068156 95625052956 96056895096 96592826596 98661119986 98882128886 98986298686
那里有 46 个数字,根据定义和 2011 年的倍数,所有数字都是可翻转对称的,小于 10^11。看起来满足此条件的 2011 的倍数将变得越来越少,因为从统计上看,随着位数的增加,回文的倍数会越来越少。
即对于任何给定的范围,比如 [1, 10^11](如上),有 46 个。对于宽度相等的相邻范围:[10^11+1, 2*10^11],我们可能会猜测找到另一个46左右。但是,随着我们继续以 10 的更高次幂使用相同宽度的间隔,数字的数量是相同的(因为我们分析的是等宽度间隔),尽管回文条件现在落在更多的数字上,因为数字的数量增加了。因此,接近无穷大时,我们期望任何固定间隔上的回文数接近 0。或者,更正式地(但没有证明)对于每个正值 N,给定间隔(预定宽度)的概率为 0 将具有多于 N 的倍数2011 年的回文数。
因此,随着穷举搜索的继续,我们可以找到的回文数将会减少。根据任何发现的回文方 block 可翻转的概率,我们假设回文方 block 均匀分布(因为我们没有分析告诉我们其他情况,也没有理由相信其他情况),然后任何给定方 block 的概率可翻转的 d 位数长度为 (7/10)^d。
让我们从我们找到的最小的这样的正方形开始
192555261 ^ 2 = 37077528538778121
它已经有 17 位数字长,因此它被可翻转定义的概率约为 0.002(约 1/430)。但是当我们到达列表中的最后一个时:
98986298686 ^ 2 = 9798287327554005326596
长度为 24 位,被翻转定义的概率小于 1/5000。
因此,随着搜索继续以更高的数字进行,回文的数量会减少,并且任何找到的回文正方形可翻转的概率也会降低 - 一把双刃剑。
剩下的就是找到某种密度比,并相应地了解找到解决方案的可能性有多大......尽管直觉上很清楚,从概率上讲,找到解决方案的可能性要小得多(这绝不排除那个或甚至存在大量的解决方案(可能是无限多?))。
祝你好运!我希望有人能解决这个问题。与许多问题一样,解决方案通常不像在更快的机器上运行算法或具有更多并行性或更长的时间等那样简单,而是使用更先进的技术或更具创造性的方法来解决问题,这自己更进一步的领域。答案是一个数字,(通常)比用于推导它的方法更不重要。
关于java - 求一个整数 n > 0 满足以下三个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780496/
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin