我还在学习python.我刚刚编写了这个方法,以确定一个玩家是否赢得了一个井字游戏,给出了一个董事会状态:'[['o','x','x'],['x','o','-'],['x','o','o']]'
def hasWon(board):
players = ['x', 'o']
for player in players:
for row in board:
if row.count(player) == 3:
return player
top, mid, low = board
for i in range(3):
if [ top[i],mid[i],low[i] ].count(player) == 3:
return player
if [top[0],mid[1],low[2]].count(player) == 3:
return player
if [top[2],mid[1],low[0]].count(player) == 3:
return player
return None
Run Code Online (Sandbox Code Playgroud)
在我看来,我多次检查3个字符列表,并可以将检查重构为自己的方法,如下所示:
def check(list, player):
if list.count(player) == 3:
return player
Run Code Online (Sandbox Code Playgroud)
...但后来意识到所有真正做的就是改变线条:
if [ top[i],mid[i],low[i] ].count(player) == 3:
return player
Run Code Online (Sandbox Code Playgroud)
至:
if check( [top[i],mid[i],low[i]], player ):
return player …Run Code Online (Sandbox Code Playgroud) 我只是在经过多次努力后才重新安装perl/Tk模块.我意识到我不明白dmake或make等实际上在做什么.
我正在使用安装在C:\ strawberry的草莓perl.
Fisrt我将模块解压缩到另一个目录并运行perl makefile.pl,它工作正常.然后我尝试了dmake哪个不起作用.我想那些知道这是如何工作的人会很明显.
当我将模块放置为C:\ strawberry的子目录时,我可以运行perl makefile.pl,dmake,dmake test和dmake install.
我的猜测是dmake install正在向解释器添加一些可执行文件,并且工作模块必须在子目录中.是否有任何文章可以解释它在做什么?
我有一系列Moose对象,我希望通过Catalyst :: View :: JSON提供给JSON :: XS.JSON :: XS无法编码有福的数据结构.我知道MooseX :: Storage :: Format :: JSON可以 - 有点 - 做我想做的事; 但是,它似乎相当沉重.我正在寻找的与XXX.pm提供的信息基本相同.我只是想在原始数据结构递归unblessed所以(驱动程序是内部使用)可以显示它.JSON::XSJSON::AnyC:V:JSON
使用Catalyst::View::JSON和JSON::XS使用Moose对象的最佳方法是什么?看来我有四个明显的选择:
Catalyst::View::JSON工作与驼鹿对象,通过修补C:V:JSON的阅读freeze和完成的要求,如果曝光的参数是驼鹿对象.JSON::XS回退以返回值$obj->freeze if $obj->isa('Moose') && $obj->does('MooseX::Storage::Format::JSON').我应该调查MX:S:F:JSON以确保JSON::Any由代理使用的类MX:S:F:JSON是什么JSON::XS(如果为调用使用JSON::Any的Moose对象选择不同的内部编码器,则不愿意想到错误JSON::XS.Catalyst::View::JSON做它的事情.Catalyst::View::JSON.只需写入STDOUT $obj->freeze并手动完成请求..这似乎是最hackish.我确定还有其他一些选择,任何想法?什么是我最好的选择?
我已经安装了perlbrew,这似乎是一个很好的解决方案,但在实际尝试安装一些Perl版本时,我得到了一些毫无意义的错误:
$ perlbrew install perl-5.12.1
Attempting to load conf from /home/dave/perl5/perlbrew/Conf.pm
Fail to get http://search.cpan.org/dist/perl-5.12.1 (error: ) at /home/dave/perl5/perlbrew/bin/perlbrew line 1277.
Run Code Online (Sandbox Code Playgroud) 我一直在"未设置TERM环境变量".我在Mac终端上使用svn命令时出错.
我以为我通过以下方式设置了我的个人资料:
export SVN_EDITOR=/usr/bin/nano
export EDITOR=/usr/bin/nano
Run Code Online (Sandbox Code Playgroud)
在.profile和.bash_profile中,重置终端,它仍然给我这个错误.
有帮助吗?
在Foo.pm中使用此代码:
use strict;
use warnings;
package Foo;
BEGIN {
$Foo::AUTHORITY = 'cpan:ETHER';
}
1;
Run Code Online (Sandbox Code Playgroud)
将文件作为模块加载不会出错:
$ perl -I. -mFoo -e1
$
Run Code Online (Sandbox Code Playgroud)
然而,直接加载文件会:
$ perl Foo.pm
Name "Foo::AUTHORITY" used only once: possible typo at Foo.pm line 6.
Run Code Online (Sandbox Code Playgroud)
而且,perl -e'require "Foo.pm"'也没有警告.
为什么会出现这种差异?很明显,文件的解析方式不同,但是如何以及为什么?
在完成Tortoise入门教程后,我终于开始了解它,对我来说的困惑是在完成设置过程之后:
1)我创建了我的SVN回购
2)我有我工作的目录,可以说它叫做"我的网站"
3)我使用乌龟来右键点击我的网站并将它们导入我的SVN ...好到目前为止我认为......
4)这就是我认为我迷路的地方,我现在需要右键点击"我的网站"并选择"结账"这样就把一个文件夹放在"我的网站"里面,名为"SVN",里面的"SVN"是从里面复制的文件"我的网站"
我在最后一步做错了吗?我假设现在我可以编辑"我的网站"中的文件,他们会更新,但这不会发生.只有当我在"我的网站/ SVN"内部工作时,他们才真正进行互动.
那么最好是执行步骤1 - 3,但将我的结帐文件夹放在我原来的"我的网站SVN"之外.然后我可以删除旧的"我的网站"文件夹,从现在开始只在"我的网站SVN"中工作?
感谢您对此的任何澄清!
我声明并初始化了一个具有[100] [1000] [1000]个char元素(100MB)的数组,它没有说第一次堆栈溢出.但是当我运行它一段时间后它会抛出一个堆栈溢出异常!我在项目选项 - >链接器 - >系统中将-Stack Reserve Size-增加到200,000,000,但它没有用!我正在使用2GB Ram.How我如何避免堆栈溢出.
我喜欢谷歌这个(我已经尝试过),但我不确定它叫什么,更不用说怎么做了.
考虑:
project A
project B
Run Code Online (Sandbox Code Playgroud)
我正在研究项目A,这恰好需要项目B.我如何在没有用项目A检查项目B的情况下,引用它?
换句话说,有一种方法(我在放置时经历过)允许您在项目中使用项目,如果有人要更新该项目,您将获得更改.基本上它意味着你不必担心过时或管理两份东西.
没有必要(但如果你能/想要)解释,只需一个链接或名称就可以解决问题.
干杯.
我正在尝试替换源文件中的文本,就像C预处理器的工作方式一样.我的方法是解析常量及其值,并用它们填充哈希数组.我的问题如下:
在源文件中,我有:
#define CONSTANT 10
#define CONSTANT_PLUS_ONE CONSTANT + 1
Run Code Online (Sandbox Code Playgroud)
我/^#define\s+(\w.*)\s+.*($key).*/用来匹配第二行,但当我替换时s/$2/$defines{$key}/,两个CONSTANT实例都被替换,即
#define CONSTANT 10
#define 10_PLUS_ONE 10 + 1
Run Code Online (Sandbox Code Playgroud)
我是一个Perl新手,所以我希望有人可以指出我正确的方向,或者如果我犯了一个明显愚蠢的错误.
perl ×5
svn ×2
c++ ×1
catalyst ×1
environment ×1
install ×1
json ×1
macos ×1
module ×1
moose ×1
perlbrew ×1
python ×1
refactoring ×1
regex ×1
repository ×1
require ×1
shell ×1
tic-tac-toe ×1
tortoisesvn ×1
unix ×1
warnings ×1