GitHug通关手册
在V2EX看到一个叫做githug的游戏,目的是让大家熟悉git,正好,我也是个只会add/commit/push的人(虽然自然不敢说精通)
安装(安装前请保证你安装了Ruby):
1gem install githug
2
开玩。
随手记录自己的学习过程
在V2EX看到一个叫做githug的游戏,目的是让大家熟悉git,正好,我也是个只会add/commit/push的人(虽然自然不敢说精通)
安装(安装前请保证你安装了Ruby):
1gem install githug
2
开玩。
对于弱类型语言而言,隐式的类型转换永远是个大坑,你永远不知道什么时候会踩到坑。
好不容易做完了课设,到复习期间大概还有那么几天时间,准备稍微看看红宝书——JavaScript高程,当年什么都不懂看到脑袋爆炸,现在虽然表面上看着写写JavaScript已经没什么问题,实际上对于很多东西依旧不是很清楚。
这次就刚看到一个很好玩的东西。
首先:
11.1 + "1.1" // "1.11.1"
2+"1.1" + 1.1 // 2.2
3"1.1" - 1.1 // 0
41.1 - "1.1" // 0
5
这里我们大概需要知道的是,如果一个字符串可以转换为数字(内部调用的是Number()
函数),那么在转为数字后可以参与运算了,但是如果是字符串加上数字,那么可以视其为字符串拼接。
比如第一个就是明显的字符串拼接。但是如果加上符号,那么就会先进行一个类型转换,在与后面的数字运算。
而减法不具有拼接效果,因此就是转换啦。
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
对于这题,你想到了什么吗?
没错,这题其实是二进制加法的变种,依次递增而已,并没有什么区别。
事实上,上学期写过二进制加法的代码,感觉应该不太难,结果脑子生锈了。
本题没有输入,我们来看看代码吧,因为只是一个二进制累加问题:
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
这题的问题不大,关键是找规律,很快我们就看出来,第一行和第一列是字母顺序,而剩下的则是对角线相同的关系。
数字规模也非常小,那就好说了。
1import java.util.*;
2
3public class AlphamosicGraphics {
4 public static void main(String[] args) {
5 Scanner in = new Scanner(System.in);
6
7 int n = in.nextInt();
8 int m = in.nextInt();
9
10 char[][] arr = new char[n][m];
11
12 for (int i = 0; i < n; i++) {
13 arr[i][0] = (char)('A' + i);
14 }
15
16 for (int i = 0; i < m; i++) {
17 arr[0][i] = (char)('A' + i);
18 }
19
20 for (int i = 1; i < n; i++) {
21 for (int j = 1; j < m; j++) {
22 arr[i][j] = arr[i - 1][j - 1];
23 }
24 }
25
26 for (int i = 0; i < n; i++) {
27 for (int j = 0; j < m; j++) {
28 System.out.print(arr[i][j]);
29 }
30
31 System.out.println("");
32 }
33 }
34}
35
这道坑爹题真是让人绞尽脑汁,实际上我觉得大家应该也能感受到,很多看似不难的算法题实际上难度在于——如何处理大数的情况,这道题也是一样。
这题是一道非常好的题,因为我不熟悉Java,对于各种类都不太清楚,也没什么感觉,但这题让我了解到了很多类/方法的差别,很具有学习价值。
给定n个十六进制正整数,输出它们对应的八进制数。 输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。
很明显的进制转换,刚开始我们想到的肯定是:既然是Java,大概会有进制转换的函数——一查,当然是有的:
1Integer.toOctalString(Integer.valueOf(x, 16))
2
这个方法的连用也就是将16转成转成10进制再转成八进制。
这一道题本来应该很简单:
求1+2+3+...+n的值。
简单吧,一个循环就能搞定,看上去是这样,但是事实上,我们要注意到数据规模:
1 <= n <= 1,000,000,000。
本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。此时你需要想想其他方法。你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。
嗯,那么就会遇到运行的问题。但是这种东西有什么好方法么——答案是,有的,名为等差数列求和公式的东西。
讲到这里,基本上大家也发现了,许多题都是在考你的数学能力。
很早写好了一直没写笔记,其实算法是个很微妙的数学问题,简单的题还是难得题基本上感觉都是数学不过关……
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
以前用C语言也写过斐波那契数列,不过内容不同,如果不知道斐波那契是什么的话,可以看看:http://codesky.me/archives/c-fibonacci-series.wind
事实证明,用直接递归求的方法确实不现实,但是人家有提示嘛:
在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。
由于在下的数学实在是一团糟,所以根本不知道发生了什么。
在周五的时候,某同学给我发了一个网页,大致想知道这是怎么实现的。
网址在这里:http://dota2.gamepedia.com/Dota_2_Wiki
首先思考了一下,第一,是居中,居中我们使用的text-align: center
,说真的,这个刚开始我还犹豫了一下,不过发现确实是通过这个实现的。
但是在最后一行两格的情况,会发生最后一行居中而不是这个效果,那么接下来这个效果是怎么做的呢。
它是通过n个计算好长度的div
来实现的。该div
的width和其他一样而height为0,这样就能实现这种效果了,而n的值应该也是计算好的,或者多加也无所谓,总之是个很微妙的实现方式,也算挺有趣。
具体的demo,有空再来,诸位看官现在可以在此网站右键审查元素。
最近在刷蓝桥杯的题,主要是比较简单,顺便可以练练自己的Java能力,因为光看书记不住实在不靠谱。
入门训练其实是熟悉OJ,理论上而言没什么好说的,但其实还是有很多疑问的。
比如这道圆的面积:
给定圆的半径r,求圆的面积。 输入包含一个整数r,表示圆的半径。
在使用checkbox中,很多时候,我们其实是要传入数组的,实际上,在
HTML中,只要将name
设置为check[]
即可。
这样在PHP中获取到的check
就是一个数组的形式。
此外,有些时候,即使不勾选,我们依旧需要check
拥有一个不勾选的默认值,然而,check
默认只有勾选项才会传入值,解决方法挺有意思的:
1<input type="hidden" value="0" name="check[{{$list->id}}]">
2
加入一个相同name的hidden,如果不勾选,就会传入此值,否则,checkbox中的值将会覆盖原值,相当有趣。