警告:Project Euler Problem 1 Spoiler
我最近发现了Project Euler,并决定尝试一些问题.第一个问题是将0-999之间的数字相加,即3或5的倍数.
我的第一个"类似java"的解决方案是:
print threeAndFive(1000)."\n";
# Returns the sum of the numbers less than $max that are multiples of 3 or 5
sub threeAndFive
{
my $max = shift;
my $sum = 0;
for (my $i=; $i < $max; $i++)
{
$sum+=$i if (validate($i));
}
return $sum;
}
sub validate
{
my $num = shift;
if ($num % 3 == 0 || $num % 5 == 0)
{
return 1;
}
return undef; …Run Code Online (Sandbox Code Playgroud) 当我插入iPhone 5时,Xcode会识别它,但是当我构建我的代码并尝试在手机上运行它时,我收到此错误:
找不到此可执行文件的有效配置文件.
所以我去组织者,单击设备下的电话,然后单击添加到门户网站,但我收到此错误:
此团队中已存在编号为"..."的设备.
我究竟做错了什么?
我读过很多关于 UDP 与 TCP 的其他线程,但还没有真正找到任何可以正确回答我的设计问题的线程
我将要为一个项目开发的聊天网络将有 3 个主要应用程序:客户端、服务器和集线器(服务器)。
HUB服务器是主服务器,将所有服务器连接在一起形成网络。服务器将跟上正在创建的聊天室,换句话说,它将托管聊天室。客户端将用于连接到服务器以加入聊天室。
现在我主要关心的是,当从客户端到客户端、服务器到服务器或服务器到客户端发送或执行请求时,何时应该使用 UDP over TCP,反之亦然?
注意:整个聊天网络项目100% 基于文本,没有图形、网络摄像头、麦克风或文件共享功能。
基本上,我想找到任何子字符串第一次出现的索引:“ABC”、“DEF”或“GHI”,只要它们出现在三个间隔中。我为匹配此模式而编写的正则表达式是:
regex = compile ("(?:[a-zA-Z]{3})*?(ABC|DEF|GHI)")
Run Code Online (Sandbox Code Playgroud)
在*?确保我得到的第一场比赛,因为它的非贪婪。我正在使用捕获组,因为我认为这是实际获取我实际正在寻找的(子字符串的)索引的唯一方法。我不在乎比赛本身从哪里开始,只关心捕获组从哪里开始。在...{3}...该模式发生在3,即时间间隔的任务:
example_1 = "BNDABCDJML"
example_2 = "JKMJABCKME"
Run Code Online (Sandbox Code Playgroud)
example_1将匹配,因为"ABC"在位置3处发生,但example_2将不匹配,因为"ABC"在第4位发生。
理想情况下,给定字符串:
text = "STCABCFFC"
Run Code Online (Sandbox Code Playgroud)
这个匹配,但如果我只是得到比赛的开始,它会给我0,因为这是比赛的开始索引,我想要的是3
我想这样做:
print match(regex, text).group(1).start()
Run Code Online (Sandbox Code Playgroud)
但是,当然,这不起作用,因为start()它不是字符串的方法,而且字符串现在独立于text. 我不能简单地搜索捕获组中子字符串的起始索引,因为这不能保证它遵循正则表达式模式(仅以 3 为间隔出现)。也许我忽略了一些东西,我没有用python写太多,所以如果这是一个微不足道的问题,请原谅我。
为什么我要使用Perl匿名子程序而不是命名子程序?激励我思考以下方面的优点:
这是一个非常酷的概念,但它在任何方面都很实用吗?我有必要使用存储在某种数据结构中的匿名子/子引用吗?或者也许是方便的情况?
我理解为什么在某些上下文中需要匿名子类,例如处理共享变量(当在另一个子元素中声明匿名子元素时),但除非我遗漏了某些内容,否则我只是看不到使用任何类型函数的意义参考.看起来我们应该直接调用函数,代码看起来会更好/更有条理.
请告诉我,我错了.我很想有充分的理由使用这些东西.
提前致谢.
Perl,与Java和Python一样\s,除了其他特殊字符外,还有与空白相匹配的特殊正则表达式字符.
在Perl中,以下内容无效:
my $sentence = "The End";
my $subStr = "\s"; #Does NOT work, needs to be "\\s" or '\s'
if ($sentence =~ /$subStr/)
{
say "True";
}
Run Code Online (Sandbox Code Playgroud)
在Java中,这将是有效的:
String s = "The End";
if (s.matches(".*\\s.*")) //same deal as with Perl ("\\s")
{
System.out.println("True");
}
Run Code Online (Sandbox Code Playgroud)
在Python中,可以使用"\s"或者'\s'.
Java和Perl似乎都在处理由""它封装的特殊正则表达式字符.我查找了预定义字符类(Java),它简单地说:"如果在字符串文字中使用转义构造,则必须在反斜杠前面加上另一个反斜杠才能编译字符串."
为什么Java和Perl对转义序列的处理方式与特殊的正则表达式字符不同(当它们都被封装时""),但是,python不是?
就像为什么设计师选择转义序列一样,\n或者\t,要求一个反斜杠,但是对于预定义的字符类,比如\s要求两个(同时"")?
这是别的结果吗?或者它是否以某种方式简化某种交互或者你有什么?
我会假设它不是任意的.Python只需要\两种方式,但Perl和Java \\在处理时要求使用"".除了有点混乱,它只是凌乱.所以,我认为这个决定有充分的理由.谁知道为什么?
我理解接口和抽象类是什么,但我不知道如何获得以下功能; 如果有可能,那就是.我有一堆类,每个类都有一个validate()方法.每种方法可以采用不同的参数.例如,我们可以使用以下方法创建类:
boolean validate();
boolean validate(Block[]);
boolean validate(BlockSet[]);
...
Run Code Online (Sandbox Code Playgroud)
所以,基本上我想知道我是否可以使用接口或抽象类或其他东西来定义一个契约,以实现一个具有给定名称和返回类型的方法,但对参数集没有限制.提前致谢.
所以我有以下代码(已经从教程中无耻地复制,因此我可以对基础进行排序),其中它要求玩家加载他们的游戏(基于文本的冒险游戏)但我需要一种方式来显示所有保存的游戏在目录中.我无需担心当前目录.这是我的代码:
public void load(Player p){
Sleep s = new Sleep();
long l = 3000;
Scanner i = new Scanner(System.in);
System.out.println("Enter the name of the file you wish to load: ");
String username = i.next();
File f = new File(username +".txt");
if(f.exists()) {
System.out.println("File found! Loading game....");
try {
//information to be read and stored
String name;
String pet;
boolean haspet;
//Read information that's in text file
BufferedReader reader = new BufferedReader(new FileReader(f));
name = reader.readLine();
pet = reader.readLine();
haspet = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python FlickrAPI包来管理我在Flickr中的一些照片.我无法让某些功能正常工作.我从以下开始:
import flickrapi
api_key='###MYkeyHERE###'
api_secret'####MYsecretHERE###'
flickr = flickrapi.FlickrAPI(api_key,secret=api_secret)
Run Code Online (Sandbox Code Playgroud)
我还运行了令牌身份验证并检查了我的Flickr帐户页面以确保它有效
(token, frob) = flickr.get_token_part_one(perms='write')
flickr.get_token_part_two((token, frob))
Run Code Online (Sandbox Code Playgroud)
当我运行以下命令获取我的集合列表时,它返回看似空响应的内容.
photos = flickr.photos_search(user_id='MYuser@id', per_page='10')
Run Code Online (Sandbox Code Playgroud)
响应看起来像:
<Element 'rsp' at 0x22c2e10>
Run Code Online (Sandbox Code Playgroud)
它具有'stat'属性,设置为OK.我想知道如何实际看到集合列表.
有趣的是,以下代码完美运行并在我的一组中打印照片的名称:
for photo in flickr.walk_set('72157636771398243'):
print photo.get('title')
Run Code Online (Sandbox Code Playgroud)
这使我认为我的身份验证工作正常,但我正在做一些其他错误.我非常感谢帮助.
如果我们有:
seq = []
Run Code Online (Sandbox Code Playgroud)
要检查它是否为空,我们可以:
print "empty" if not seq else "not empty"
Run Code Online (Sandbox Code Playgroud)
但是,如果我们有以下内容,这将无效:
seq[[],[]]
Run Code Online (Sandbox Code Playgroud)
有一个简单的方法可以检查这个吗?
我知道我们可以这样做:
for mini_seq in seq:
print "empty" if not mini_seq else "not empty"
Run Code Online (Sandbox Code Playgroud)
但是有更好的方法吗?
编辑:
为了澄清,虽然我的上述方法可能不建议,但我想要一个响应者想出的输出,无论如何.