Skip to content

Instantly share code, notes, and snippets.

@lionello
Created May 5, 2017 12:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lionello/08f841bb6ade70bff98d7679adbf23ee to your computer and use it in GitHub Desktop.
Save lionello/08f841bb6ade70bff98d7679adbf23ee to your computer and use it in GitHub Desktop.
Count/detect popular words in social media messages
#!/usr/bin/env dmd -run
import std.range;
struct Words(R,int maxWordLen = 4)
{
int wordLen;
R inner;
dchar[maxWordLen] buffer;
this(R inner) {
this.inner = inner.save;//refRange(&inner);
foreach (ref d; buffer) {
if (this.inner.empty) break;
d = this.inner.front;
this.inner.popFront();
}
}
@property bool empty() { return wordLen > maxWordLen; }
@property const(dchar)[] front() @nogc { return buffer[0..wordLen]; }
void popFront() {
if (++wordLen <= maxWordLen || this.inner.empty)
return;
import std.algorithm;
std.algorithm.copy(buffer[1..$], buffer[0..$-1]);//, buffer[1..$]);
//buffer[0..$-1] = buffer[1..$];
buffer[$-1] = this.inner.front();
this.inner.popFront();
wordLen = 1;
}
}
auto byWords(R)(R range) {
return Words!R(range);
}
void main(string[] args) {
import std.stdio;
import std.utf;
import std.algorithm.iteration;
long[dstring] counts;
import std.curl;
`#台湾青春三部曲#今年夏天,电影《六弄咖啡馆》带你回到“那些年”的青涩时光,回到“少女时代”的自己。台湾青春三部曲,继续和你谈一场充满未知数的恋爱。`
`一位用户为了表达自己对Windows 95的“爱”,利用Dosbox模拟器,使这款操作系统运行在Xbox One上。他还在Windows 95上玩起了《毁灭公爵》。O网页链接`
`这个我吃!//@尤三-U3:[哆啦A梦吃惊]可以的! //@曜_世事翻覆多言相误:哈哈哈哈哈哈哈好吧我吃 //@落小翎是冬日翎饺子:好带感!! //@星际魔法赏金猎人阿九:可以的可以的! //@瘪三爷_:天!了!噜! //@凤梨晒菊花去了:这可以有`
`丝不挂的大卫被众名画人物嘲笑尺寸太小,羞愤之下,大卫一路逃出了博物馆......结局真是赞叹让人!`
`主银让博美犬泡澡,没想到博美犬居然泡着泡着就睡着了。 。 。这汪的双眼皮还真是深,简直就是汪界的美男子`
`#520撩汉日#5.20即将到来,你准备了怎样的惊喜给他呢?我们已经收到了许多有趣的想法,继续@Gucci 官方微博分享你或甜蜜或特别的创意,只要能够让人印象深刻,就有机会获赠5.20特别大礼! L520撩汉日开启撩汉技能`
`【快讯:埃及航空一架从巴黎飞往开罗的航班从雷达上消失】据埃及航空消息,埃及航空一架从巴黎飞往开罗的804航班从雷达上消失。该航班当地时间23点09分起飞,载有59名乘客和10名机组人员。`
`#首发#@谭维维 献唱的#X战警:天启#中国宣传推广曲《Take My Hand》MV终于公开[酷]!MV中,为了搭配未来感十足的电影画面,谭维维身着银色金属质感的上衣与短裙,质感十足的声线搭配电影极具科幻视觉震撼力的画面,足够引爆你的视听神经!还在期待这部大片的你,先来观看MV过过瘾吧[色][来]!>>...展开全文`
`三辆小车钻胡同,拍摄当天真心累,拿到正片时太开心,小牛M1很抢镜!感谢@小時光LTime 北锣面包吧。位于北锣鼓巷的小时光咖啡猫猫狗狗可爱,氛围轻松,常有网红出没,临走还能带走玫瑰!@ramp驾道 6月刊#五环之歌二环篇 @朱微微 @小牛电动 @TOKEN胡依林 @大众汽车 @奔驰smart @许群 感谢@摄影师痞子东`
`【Wintel出狠招:Kaby Lake捆绑Win 10的背后】PC出货量连续六个季度出现下滑的状况,微软和英特尔自然不想坐视PC产业一直颓废下去。有消息指出,英特尔和微软可能正在盘算:只有使用最新的Windows 10,年内发布的Kaby Lake以及六月底登场的入门级Apollo Lake才会获得更好的支持。O网页链接`
.byDchar
.filter!(a => a >= '一')
.byWords
.each!(w => counts[w.idup] += w.length+1);
import std.algorithm.sorting;
counts
.byKeyValue
.array
.sort!(q{a.value > b.value})
.take(40)
.each!(a => writeln(a.key, '\t', a.value));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment