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

©2016 No rights reserved. 🐃

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

🐸🐸🐸🐸🐸🐸🐸🐸🐸🐸
@dsuse
Download Telegram
Forwarded from dnaugsuz
(今年 2 月的新项目,比官方纯 CMS 式的好多了
Fly | 全群最菜
http://bytew.net/OIer/
因为我只认识 Fly 和 LWL12 两个 OI 生,而 LWL 拼音搜索了找不到,所以这里看看 Fly 学校的成绩

总之,也有 400 分的大佬也有 100 多分 200 多分的,当然这个 OI 加分啊也是十分有限的

整个学校看来,从 2011 起到现在都是 OI 获奖都是稳步上升,不过一等奖一直都是比较小幅度波动的

2017 的公开数据 三/二/一:11/11/5

还是很不错的成绩。综合评分:622,综合评级:C

for (let e in resultLogs.children()) { console.log(e); if (e.attribute.item('data-targert')) console.log(e) }

因为各种失败 filter 也用不了暂时算了,长度 / 2 大概是 resultLogs.children().length / 2 //=> 51

就是说大佬大概是 十分之一的概率
能得奖的大概是 一半以上,27 (看走势今年可能是三十几)人比 51 人

因为数学不熟悉统计学不熟悉就是这样的分析方法了,学习是需要时间的,我时间有限。

(每次 DOM 操作和 JQuery 各种问题总是让我摸不着头脑,简单 filter 一下居然花三十分钟 JavaScript 要玩)

啥时候弄 C# .NET Core 搞个 LINQ 查询 CSV,贼方便。

这个前端没做 URL routing,就不提供快捷链接了,反正界面简洁容易上手。
duangsuse Throws
🤔 Sticker
呃,至于这个数据工具的后端代码么,比较有 OI 生的风格,但命名问题和空格代码风格都不是很好看(e.g. repos.each do |i| 这种参数命名)。
也包括表语法的缩进什么的,Python 还有个 del 语句我觉得比较新奇,虽然 C++ 里也弄了 delete

(这是说 Python 的数据整理器)

PHP 的还没看过。

JS 的都不想看,因为不相干,处理过的数据正在观看<del>视奸</del>中.
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 类花里胡哨的东西(