小编duk*_*reg的帖子

Clojure(读取行)不等待输入

我正在Clojure写一个文本游戏.我希望玩家在控制台上输入线条,并让游戏逐行响应.

研究表明,这(read-line)是一种在Clojure中从标准输入中获取文本行的方式,但它对我不起作用.

我在一个新的Leiningen项目中,我已经添加了一个指向唯一源文件的:main子句project.clj:

(ns textgame.core)

(defn -main [& args]
  (println "Entering -main")
;  (flush)                      ;makes no difference if flush are commented out
  (let [input (read-line)]
    (println "ECHO:" input))
;  (flush)
  (println "Exiting -main"))
Run Code Online (Sandbox Code Playgroud)

使用lein run产量:

Entering -main
ECHO: nil
Exiting -main
Run Code Online (Sandbox Code Playgroud)

换句话说,没有机会在控制台输入文本(read-line)进行阅读.

我应该如何让Clojure等待输入字符和换行符并返回相应的字符串?

(我在Linux Mint 11上使用GNOME Terminal 2.32.1,在Java 1.6.0_26 Java HotSpot(TM)64位服务器VM上使用Leiningen 1.6.1.1,Clojure 1.2.1版.)

更新:如果我跑lein repl,我可以(println (read-line)),但不是当我有一个-main功能并运行使用lein run.

user-input clojure console-application leiningen

5
推荐指数
2
解决办法
3129
查看次数

如何在 Julia 中将字符串视为数组/向量

在 Julia 语言中,我想在字符串上使用为 Array{T,1} aka Vector{T} 定义的函数,本质上将其视为 Array{Char,1}。

我想使用的函数示例:

julia> deleteat!("Hrello!",2)
ERROR: MethodError: no method matching deleteat!(::String, ::Int64)
Closest candidates are:
  deleteat!(::Array{T,1} where T, ::Integer) at array.jl:1177
  deleteat!(::Array{T,1} where T, ::Any) at array.jl:1214
  deleteat!(::BitArray{1}, ::Integer) at bitarray.jl:901
  ...
Stacktrace:
 [1] top-level scope at none:0

julia> deleteat!(['H','r','e','l','l','o','!'], 2)
6-element Array{Char,1}:
 'H'
 'e'
 'l'
 'l'
 'o'
 '!'
Run Code Online (Sandbox Code Playgroud)

明确地说,我想以字符串开头并以字符串结尾,但使用数组 {Char,1} 操作来更改字符串。

julia

5
推荐指数
2
解决办法
2771
查看次数

J中的exit(不是exit'')是什么意思?

我最近安装了J并在jconsole中玩。这是我的会议结束时的样子:

    quit
|value error: quit
    exit
2!:55
Run Code Online (Sandbox Code Playgroud)

我在网上搜索并很快发现正确的退出代码是

    exit''
Run Code Online (Sandbox Code Playgroud)

既然无意义的词给出了值错误,并且“exit”的子串都不是有效的J,为什么要为“exit”给出一个值呢?2!:55 是什么意思?

j

4
推荐指数
1
解决办法
438
查看次数

按J中出现次数映射元素

使用J语言,我希望获得数组元素计数的映射.

具体来说,我想输入一个带有两到多个字母的小写英文单词,然后取回单词中的每对字母以及出现的次数.

我需要一个动词来提供这样的东西,无论你认为合适的J结构如何:

对于'可可':

co 2
oc 1
oa 1
Run Code Online (Sandbox Code Playgroud)

对于'香蕉':

ba 1
an 2
na 2
Run Code Online (Sandbox Code Playgroud)

对于'牛奶':

mi 1
il 1
lk 1
Run Code Online (Sandbox Code Playgroud)

对于'到':

to 1
Run Code Online (Sandbox Code Playgroud)

(对于像'a'这样的单字母单词,任务未定义且不会尝试.)

(顺序并不重要,这就是我碰巧列出它们的方式.)

我可以轻松地将单词中的连续字母对作为矩阵或框列表:

   2(] ;._3)'cocoa'
co
oc
co
oa
   ]
   2(< ;._3)'cocoa'
?????????????
?co?oc?co?oa?
?????????????
Run Code Online (Sandbox Code Playgroud)

但是我需要帮助从那里到对数映射.

我知道〜.和〜:但我不只想返回重复的唯一元素或索引.我想要计数的映射.

NuVoc的"Loopless"页面表明/(或/ \.或/ \)是我应该寻找累积问题的地方.我熟悉/对数值数组的算术运算,但是对于你/我我不知道你需要积累什么样的字母组合才能组成y.

(注意:我已经可以在没有帮助的情况下使用Java或Python等"常规"语言执行此操作.关于SO的类似问题适用于与J.语法和语义截然不同的语言.我对这种问题的惯用J方法很感兴趣. )

j

4
推荐指数
1
解决办法
112
查看次数

如何测试是否在Python中导入模块以进行测试驱动的游戏开发?

我即将使用python和libtcod roguelike游戏库制作游戏.

更重要的是,我正在使用PyMock,因为我刚开始学习测试驱动开发,我决心不作弊.我真的想养成正确的习惯,根据TDD,我需要在编写第一行代码之前进行失败的单元测试.

我认为我对"生产"代码的第一次测试应该是导入它的依赖项libcotdpy.

我的测试文件:

#!/usr/bin/python
import pymock   # for mocking and unit testing
import game     # my (empty) production code file, game.py

class InitializeTest(pymock.PyMockTestCase):
    def test_libtcod_is_imported(self):
        # How do I test that my production file imports the libtcodpy module?

if __name__=="__main__":
    import unittest
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

请:

1)(python people)如何测试模块是否已加载?

2)(TDD人)我应该对这个基本的单元测试吗?如果没有,我应该测试的第一件事是什么?

python tdd unit-testing

3
推荐指数
1
解决办法
212
查看次数

通过REBOL 2中的GMail SMTP发送电子邮件

我是REBOL的新手.关于REBOL用于发送电子邮件的例子的博客,例如"发送"文档中的这个示例:

send luke@rebol.com "Testing REBOL Function Summary"
Run Code Online (Sandbox Code Playgroud)

看过这么简单方便,我兴奋地尝试通过我的GMail帐户向自己发送测试邮件.

我查看了SMTP/POP的官方GMail帮助以获取相关的SMTP/POP服务器名称:https: //support.google.com/mail/answer/7104828?hl = en

以下是"发送"和"设置网络"文档在多大程度上让我:

>> set-net [ myrealusername@gmail.com smtp.gmail.com pop.gmail.com ]
>> send myrealusername@gmail.com "Hello me!"
connecting to: smtp.gmail.com
** Access Error: Cannot connect to smtp.gmail.com
** Where: open-proto
** Near: smtp-port: open [scheme: 'esmtp]
either only
Run Code Online (Sandbox Code Playgroud)

经过反思,当然没有用; 我告诉REBOL没有想要使用SSL/TLS,相关端口号或我的GMail密码.它必须需要以上所有才能实际发送电子邮件.

那我该怎么做?

gmail rebol rebol2

3
推荐指数
1
解决办法
232
查看次数

J 句子中从二元解释切换到一元解释

在努力混合和匹配不同的阶段之后,我试图理解 J 中的构图。我需要帮助在同一个句子中的一元短语和二元短语之间切换。

我刚刚用J做了一个简单的骰子滚轮,作为例子:

   d=.1+[:?[#]
   4 d 6
2 3 1 1
   8 d 12
10 2 11 11 5 11 1 10
Run Code Online (Sandbox Code Playgroud)

这是一条链:“d 是 1 加上 x 出现的 y 的(上限)卷”

但是,如果我想使用 >: 来递增(并跳过上限 [: ),以便它在第一个分叉后“切换”为单子解释,该怎么办?其内容为:“d 是 y 出现 x 的增量”。

像这样的东西是行不通的,尽管在我看来它具有正确的结构:

   d=.>:&?[#]
   d
>:&? ([ # ])
Run Code Online (Sandbox Code Playgroud)

(如果这种方法不适合 J,并且我应该坚持使用有盖的叉子,这也是有用的信息。)

refactoring j

3
推荐指数
1
解决办法
89
查看次数

从J表达式系统地提取名词参数

从J中的表达式中提取名词作为参数的系统方法是什么?要清楚,包含两个文字的表达式应该成为一个二元表达式,使用左右参数而不是文字.

我正在尝试学习默认风格,所以如果可以避免,我不想使用命名变量.

一个具体的例子是我制作的简单模具辊模拟器:

   >:?10#6    NB. Roll ten six sided dice.
2 2 6 5 3 6 4 5 4 3
   >:?10#6
2 1 2 4 3 1 3 1 5 4
Run Code Online (Sandbox Code Playgroud)

我想系统地将参数10和6提取到表达式的外部,以便它可以滚动任意数量的任何大小的骰子:

   d =. <new expression here>
   10 d 6  NB. Roll ten six sided dice.
1 6 4 6 6 1 5 2 3 4
   3 d 100  NB. Roll three one hundred sided dice.
7 27 74
Run Code Online (Sandbox Code Playgroud)

随意使用我的示例来说明,但我希望能够遵循任意表达式的过程.

编辑:我刚刚发现使用x和y的引用版本可以使用eg自动转换为默认形式13 : '>:?x#y'.如果有人可以告诉我如何找到13 :我可能能够回答我自己的问题的定义.

refactoring j tacit-programming

2
推荐指数
1
解决办法
136
查看次数

迭代朱莉娅的所有可能性

如果我想在每对字母上做一些事情,它可能在朱莉娅看起来像这样:

for l1 in 'a':'z'
    for l2 in 'a':'z'
        w = l1*l2
        # ... do something with w ...
    end
end
Run Code Online (Sandbox Code Playgroud)

我希望将此概括为任意长度的单词,给定一个n指定所需字母数的值.我如何在朱莉娅中做到最好?

julia

2
推荐指数
1
解决办法
52
查看次数