用ruby写了8皇后的问题
dell win10笔记本使用,17年购的三星本子,不能使用五笔,我下载了一个五笔,但在IE中却使用不了。今天,买了dell的win10机器,发现可以使用五笔了。真是幸福呀。
因为要读源码,所以就学习慢慢使用ruby,为此,进行一些小程序用ruby来开发。今天用ruby来实现8皇后问题,就是把8个皇后摆在棋盘上,要求每行、、每列、、斜线不能放两个皇后。
我的想法是,用一个二维数组,先初始化为0,放皇后的位置就用1来代替,放一个位置后,就进行判断,看每行每列每斜线是不是放两个以上的子,在使用时,发现几个有意思的地方。
a=[]
a << 1
a << 2
这样是可以的。
但若
a=[]
a[0]=1
a[2]=2
这样是不行的?
我开始想不明白,后来,知道了,<<是要进行扩大范围的,而[]=赋值是没有扩大范围的。但
[]= 对应的源码是Fary_aset
但Fary_aset代码有些长,居然有些看不懂。看上去好象也是扩大了,但为何就是程序报错呢?真是不懂。
编写另一题时,要求每个字母后面两个字母,如
"a".next.next
返回:"c"
但能否返回一个字母前面的字母呢,如
"b".prev
为了找这个函数,于是就从官网上下帮助文件。chm格式的比较好,居然没找到。
下午等新机器弄好了,就开始把office联机上。发现dell的机器送了office,还真是很好用。
读源码有一个好处,就是逼着你去使用这种语言,因为毕竟读帮助文件比起读源码,要容易得多。哪怕是用英语写的。