瞎扯淡 把妹向在线黑客马拉松

gyorou · 2014年12月18日 · 最后由 12345 回复于 2014年12月23日 · 3161 次阅读

在线 hackthon エンジニアも恋したい

偶然发现了这么一个东西。 下面涉及剧透。 エンジニアも恋したい

卧槽还能这样玩?总之在通过漫画的形式进行的剧情中会穿插一些编程的问题,通过解决这些问题,提交代码会触发不同剧情。 如果能通过所有测试,那么最终可以看到 Good Ending。相反如果测试中出现一些问题,就无法到达最完美结局。

game start

故事开头男主转职第一天遇到巧遇女主。 resize resize resize resize resize

任务 1

总之第一天,你想要在妹子面前装装 B。这个时候你接到了要完成的任务。计算商品的库存量。

输入格式
输入格式将作为标准输入提供。
N
S_1
S_2
・
・
S_N

条件
所有的测试用例满足下面条件。
1 ≦ N ≦ 100
0 ≦ S_i ≦ 100

要求输入所有商品数量的总和。

解答 1

嘛这个问题很简单。用 ruby 就更简单了。

lines=gets.chomp.to_i
result=0
lines.times do
  result+=gets.chomp.to_i
end
puts result

ok,三个测试全部通过。继续 misson2。 resize resize resize

……卧槽你是来卖萌的么?

任务 2

计算需要补充商品的总价格。

输入格式
N
T_1 S_1 P_1
T_2 S_2 P_2
・
・
・
T_N S_N P_N

满足条件
1 ≦ N ≦ 100
1 ≦ T_i ≦ 100
0 ≦ S_i ≦ 100
1 ≦ P_i ≦ 10,000

输入的第一行 N 为商品数量。接下来,每行第一个 T 为需求量,第二个 S 为库存量,第三个 P 为单价。 即当 T>=S 的时候我们需要花费 (T-S)*P 来补充某一个商品。

特么这个自然也很简单。

解法

input_lines = gets.chomp.to_i
sum=0
input_lines.times do
  tsp=gets.chomp.split(' ').map{|i| i.to_i}
  sum+=(tsp[0]-tsp[1])*tsp[2] if tsp[0]>tsp[1]
end
puts sum

嗯继续看漫画。卧槽这进展略快?已经约了?

resize resize

反正就是要做个游戏,具体说明游戏特么太长了。简而言之就是 这种 resize

给定一串数字 (比如途中的 4,5,1,10,3,4,1) 和一个窗口 (比如 3),要求找出这串数字中连续窗口大小的最大和。比如图中 (10+3+4=17 最大) resize

任务 3

输入格式
t n
m_1
m_2
m_3
...
m_n

条件
1 ≦ t ≦ n ≦ 300,000
0 ≦ m_i ≦ 10,000

解法 3

lw= gets.chomp.split(' ').map{|i| i.to_i}
arr=[]
lw[1].times do 
  arr << gets.chomp.to_i
end
max=0
for i in 0..arr.size-lw[0]
   tmp=eval(arr[i..i+lw[0]-1].join("+"))
   max=tmp if tmp>max
end
puts max

resize

卧槽怎么回事。超时了,嘛看来还得考虑一下效率的问题。总之看一下这个时候的结局会是如何。

resize resize resize

特么新婚旅行箱根温泉?我不能接受。女主这大妈的样子。卧槽。重来。

解法 3 again

首先刚才的代码有两个地方效率很低。其一使用了 eval。其二是其实进行了不必要的计算。

比如计算 4,3,5,2 当窗口大小为 3 的时候的最大值。当我们计算完 4+3+5,想要计算 3+5+2 的时候,其实只需要把刚才的计算的值减去 4 并加上 2。否则当窗口很大的时候,加法计算就会很浪费时间。

lw = gets.chomp.split(' ').map{|i| i.to_i}
arr=[]
tmp=0
lw[0].times do 
 element=gets.chomp.to_i
 arr << element
 tmp+=element
end

(lw[1]-lw[0]).times do
  arr << gets.chomp.to_i
end
max=tmp
arr[lw[0]..-1].each_with_index do |element,index|
   tmp=tmp-arr[index]+element
   max=tmp if tmp >max
end
puts max

resize 终于……

resize

恩满分的结果是最后新婚旅行地变成夏威夷……

感想

年轻人就应该好好撸管特么做什么白日梦。世界上哪有这么简单把妹的方法。无耻期待续作。

日本这种东西挺多的,我记得有一系列的漫画书讲什么数据库原理啊之类的,挺不错的

#1 楼 @cifery 我看过一本《漫画数据库》,是挺有趣的,但太浅了。感觉信息量比较少,但用来入门,培养兴趣,这种形式真的很赞!

#2 楼 @chairy11 对对对,就是这本,我也看过,讲一个公主用数据库管理自己国家水果生意的,虽然很入门级别,但是培养兴趣确实不错

这种东西看多了只会对三次元越来越绝望 😄

#1 楼 @cifery #2 楼 @chairy11 嘛兴趣是最好的老师嘛。这种题目要是没有剧情肯定没人鸟就是了。话说我发现 1L 和 2L ID 的编辑距离略短

@gyorou 啊哈哈,是有点儿啊,我都没注意,哈哈

显然妹子对这类漫画无感啊,这种漫画明显适合技术宅

需要 登录 后方可回复, 如果你还没有账号请 注册新账号