duangsuse Throws
99 subscribers
3.41K photos
227 videos
100 files
2.75K links
没事乱水...
Author @duangsuse

©2016 No rights reserved. 🐃

🐶🌚🍎🏠💓💔👇
😔 🙇‍♂️🙌🚶‍♂️🏃‍♂️ 🏃‍♂️🚶‍♂️ 👆

🐸🐸🐸🐸🐸🐸🐸🐸🐸🐸
@dsuse
Download Telegram
result.csv.zip
1.3 MB
最新的数据可以在之前提到的 repo 的 model 文件夹里获取
duangsuse Throws
result.csv.zip
这些是学生的

result.csv 是合并之后的获奖选手的数据。 
school_data.csv 是排名之后的学校排名及获奖记录数据


因为不方便使用 LibreOffice Calc 分析,我准备写个 Ruby 脚本进行一下 JSON 解析转换,请等候
duangsuse Throws
这些是学生的 result.csv 是合并之后的获奖选手的数据。 school_data.csv 是排名之后的学校排名及获奖记录数据 因为不方便使用 LibreOffice Calc 分析,我准备写个 Ruby 脚本进行一下 JSON 解析转换,请等候
现在正在使用 pry,要剔除一些不需要的数据,也即选取出一些需要的数据,顺便统计一下即可

cd model; pry -r./convert_data.rb

... 真的不应该用 Psych 作为 Ruby 的 YAML 解析库,他们的 API 真是贫瘠
真可怜,Ruby 本身就是为了让编程更快乐更高效创建的,里面内建了 Hash 类的映射表支持,而 Psych 连映射表都舍不得创建,还真是『飞快』。
Psych 简直就是 YAML 解析器后端,根本没有一个良好封装的范....

# convert_data.rb, 比较模板化的代码... 呃... 其实也没什么,好看就行
require 'csv'
require 'yaml'

file = File.read('result.csv') # 这一层加载完就落在作用域外了
@logs = CSV.parse(file)
def collect_log(index = 0); @logs.collect { |l| l[index] }; end

@names = collect_log 1
@names_set = @names.uniq

@shorts = collect_log 4
@signs = collect_log 7
@year_joined = collect_log 9

puts "Bad sign part" unless @signs.uniq.-(%w[-1 0 1]).empty?

collect_log(6).map { |s| YAML.parse(s) rescue warn "Fail: #{$!}" }

接下来我们就可以扒数据了,首先定义抽象模型

class AwareInfo
%i[school school_id identity province rank grade ctype award_type score].each { |a| attr_accessor a }
def to_s; "#{identity} @ #{school}:#{grade} #{award_type} #{score} @ #{rank}"; end
end

以后添加方法用打开类即可,怀念 Kotlin Haskell 的简洁...
懒得扩充 Psych 的 API 了,可怜 Ruby 强大的内省能力了

def AwareInfo.parse(aware_map)
c = aware_map.children
aware = AwareInfo.new
aware.school = c[1].value
aware.school_id = c[3].value
aware.identity = c[5].value
aware.province = c[7].value
aware.rank = c[9].value
aware.grade = c[11].value
aware.ctype = c[13].value
aware.award_type = c[15].value
aware.score = c[17].value
return aware
end

def parse_awares(list); list.children.map { |l| AwareInfo.parse(l) }; end

@awares = @data.map { |d| parse_awares(d.children[0]) }

现在我们已经拿到了所有需要的数据(名字、拼音首字母、获奖记录、标记、加入年份),可以制作表格了。
首先来构造新的更大的抽象模型(

class OIer
%i[name pinyin awares sign year].each { |att| attr_accessor(att) }
def to_s; "#{name}(#{pinyin}) #{year}:#{sign}:\t#{awares}"; end
end


然后



最后导出 CSV 大工告成。

这些代码我准备改写成 Haskell 然后提交给 OIerDB 使用... 说好下面这月工程月呢... 啥工程没做...?
反正最近没事
convert_data.rb
2.9 KB
... 累死了,感觉自己又不能工程了?
duangsuse Throws
convert_data.rb
TOPLEVEL_BINDING 设置本地变量无效考虑到可能是同一个绑定作用域时序区别也有区别的问题
CSV 类的 new 参数是什么鬼啊... 没有用不能直接写入文件
duangsuse Throws
convert_data.rb
pry -r convert_data.rb -e 'File.write('res.csv', dump_students.string)' 即可导出所有条目
duangsuse Throws
convert_data.rb
每次弄这些都很费时间和精力,大概是做少了....
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from METO 的涂鸦板
December 十二月
原来所谓的24小时不打烊就是指不关灯啊,门倒是锁的挺死的
对了,这是个社区党建中心
convert_data.rb
3.4 KB
又更新了一下这个无聊的脚本...
Forwarded from duangsuse::Echo (duangsuse ¯\_(ツ)_/¯ |学渣|母上千古)
这部分里面有没有你们认识的 #OI
我们襄阳这里不兴这些 OI 类花里胡哨的东西(
我来给大家总结一下襄阳本地的形势:都不怎么样... 虽然四中五中是本地最好的高中了

襄阳只有四中、五中、三十五中参加了上次的 NOIP 2017

成绩这里... LibreOffic Calc 现在处理能力真还是不如 Ruby、LINQ、SQL 什么的了... 真是差劲
害得我这个不会 Ruby Comparable Mixin 的人好不容易用内部的 sort 方法勉强排了序

罗高(lg) 2016:-1:
(105 # 4956) NOIP2017普及 @ 襄阳市第三十五中学: 初一 二等奖
王银松(wys) 2012:1:
(115 # 5553) NOIP2017提高 @ 湖北省襄阳市第四中学: 高二 三等奖
杨宇轩(yyx) 2013:1:
(120 # 5407) NOIP2017提高 @ 湖北省襄阳市第四中学: 高一 二等奖
李鹤皓(lhh) 2008:0:
(155 # 2254) NOIP2013提高 @ 湖北省襄阳市第四中学: 高二 二等奖
芦俊煜(ljy) 2012:1:
(155 # 4624) NOIP2017提高 @ 湖北省襄阳市第四中学: 高二 二等奖
高恩泽(gez) 2012:1:
(175 # 4172) NOIP2017提高 @ 湖北省襄阳市第四中学: 高二 二等奖
王者(wz) 2009:0:
(190 # 2823) NOIP2014提高 @ 湖北省襄阳市第四中学: 高二 二等奖
王骏峣(wjy) 2013:1:
(200 # 3679) NOIP2017提高 @ 湖北省襄阳市第四中学: 高一 二等奖
陈泽宇(czy) 2008:0:
(200 # 1918) NOIP2013提高 @ 湖北省襄阳市第四中学: 高二 二等奖
辛哲君(xzj) 2007:0:
(245 # 1663) NOIP2012提高 @ 襄阳市第四中学: 高二 一等奖
徐秋凡(xqf) 2007:0:
(255 # 1522) NOIP2013提高 @ 湖北省襄阳市第四中学: 高三 一等奖
张特犀(ztx) 2008:0:
(275 # 1343) NOIP2013提高 @ 湖北省襄阳市第四中学: 高二 一等奖
丁祎伟(dyw) 2007:0:
(300 # 1069) NOIP2013提高 @ 湖北省襄阳市第四中学: 高三 一等奖
宋梦非(smf) 2006:0:
(310 # 937) NOIP2012提高 @ 襄阳市第四中学: 高三 一等奖
毕彰谦(bzq) 2011:1:
(340 # 1480) NOIP2017提高 @ 湖北省襄阳市第五中学: 高三 一等奖
我也在里面找到了曾经的 OIer @metowolf, 08 年的 APIO,铜牌
This media is not supported in your browser
VIEW IN TELEGRAM