Advent of Code 2015: Day 10
JP's Blog
Advent of Code 2015: Day 10
https://blog.jverkamp.com/2015/12/10/advent-of-code-day-10/
Part 1: Repeat a Look-and-say sequence 40 times. Return the length.
def look_and_say(seq):
result = ''
index = 0
count = 0
buffer = None
for c in seq:
if c == buffer:
count += 1
else:
if buffer:
result += '{}{}'.format(count, buffer)
count = 1
buffer = c
result += '{}{}'.format(count, buffer)
return result
def repeat(f, n, seq):
for i in range(n):
seq = f(seq)
return seq
print(len(repeat(look_and_say, int(sys.argv[2]), sys.argv[1])))
I’ve already gone into far more detail on Look and Say sequences before. But this time, we’re doing it iteratively in Python! Basically, we just maintain a bit of state for which character we are currently counting. When we change, output; otherwise, incrememnt the change.
There are some interesting tricks you could do with regular expressions, but I doubt you can find something faster or much more elegant than this.
Part 2: Repeat 50 times.
There’s nothing particular interesting about this one. I’ve already accounted for this by passing in the second paramter on the command line.
------------------------------------------------------------------------------------------
如果你觉得文章有用,欢迎打赏

All posts unless otherwise mentioned are licensed under 
Any source code unless otherwise mentioned is licensed under the 3 clause BSD license
Advent of Code 2015: Day 10的更多相关文章
- 2015年10个最佳Web开发JavaScript库
2015年10个最佳Web开发JavaScript库 现在的互联网可谓是无所不有,有大量的JavaScript项目开发工具充斥于网络中.我们可以参考网上的指导来获取构建代码项目的各种必要信息.如果你是 ...
- http://browniefed.com/blog/2015/09/10/the-shapes-of-react-native/
http://browniefed.com/blog/2015/09/10/the-shapes-of-react-native/
- HDU 5375 Gray code(2015年多校联合 动态规划)
题目连接 : 传送门 题意: 给定一个长度为的二进制串和一个长度为n的序列a[],我们能够依据这个二进制串得到它的Gray code. Gray code中假设第i项为1的话那么我们就能够得到a[i] ...
- #VSTS日志# 2015/12/10 – 终于可以删除工作项了
最近的更新不少,废话少说,直接上干货 定制工作项字段 本周的更新后,所有的用户都可以在vsts上直接给工作项添加字段了,具体内容包括– 添加新字段(日期,字符串,整形,数字)– 字段显示位置配置– 过 ...
- NCPC 2015 October 10, 2015 Problem D
NCPC 2015Problem DDisastrous DowntimeProblem ID: downtimeClaus Rebler, cc-by-saYou’re investigating ...
- code::blocks(版本10.05) 配置opencv2.4.3
(1)首先下载opencv2.4.3, 解压缩到D:下: (2)配置code::blocks, 具体操作如下: 第一步, 配置compiler, 操作步骤为Settings -> Compil ...
- 2015年10月23日JS笔记
ECMAScript标准:JavaScript核心语法 微软:Jscript ECMAScript标准:一纸空文 JavaScript和JScritp都号称完全实现了 ECMAScript标准 W3C ...
- 2015年10月22日CSS学习笔记
XHTML1.0对HTML4.0的改进 借鉴了XML的写法,语法更加严格. 把页面的内容和样式分离了,废弃了html4中的表示样式的标签和属性.推荐使用css来描述页面的样式. CSS样式的优先级 ! ...
- 2015第10周日CSS—3
CSS各种居中方法 CSS的居中有水平居中和垂直居中,这两种居中又分为行内元素居中和块级元素居中,不同的居中用不同方法. 水平居中 1.行内元素水平居中(文本,图片) 给父层设置 text-align ...
- 2015第10周五CSS—2
经常遇到的浏览器兼容性有哪些?如何解决? 1.浏览器默认的margin和padding不同.解决方案是加一个全局的*{margin:0;padding:0;}来统一. 2.IE6双边距bug:块属性标 ...
随机推荐
- 【win+r】快速打开软件
第一种设置方法: ①把要启动的文件夹路径添加到系统环境变量里面去 ②按win+r就可以快速启动了 第二种设置方法: 是直接把(程序的)快捷方式,放到安装目录的 Windows\System32\ 文件 ...
- xlwings rest api
https://pbihub.cn/blog/964/created_at https://docs.xlwings.org/zh_CN/latest/rest_api.html xlwings &g ...
- RabbitMQ-00-Windows10安装RabbitMQ及安装使用过程中遇到的一些问题
Window系统安装教程 安装参考博客:https://blog.csdn.net/spl545056/article/details/81392015 重装RabbitMQ时遇到的问题 安装提示成功 ...
- 别再写一堆的 for 循环了!Java 8 中的 Stream 轻松遍历树形结构,是真的牛逼
实体类:Menu.java /** * Menu * * @author lcry */ @Data @Builder public class Menu { /** * id */ public I ...
- Javaweb 登陆与验证码
本次记录分角色登陆以及验证码的Servlet. 1.登陆验证 <html><%-- Created by IntelliJ IDEA. User: jiachenglin Date: ...
- springboot集成xxl-job问题
Client-error:unknown code for readObject at 0x3c (<) 原因之一是classNotFoundRxception :com.caucho.hess ...
- java8 stream 常用操作
遍历 // list 遍历,stream() 可省略 list.stream().forEach(e -> { }); // map 遍历 map.forEach((k,v) -> { } ...
- js 防抖
// 防抖 作用:防止重复触发事件 var count = 1; var container = document.getElementById('container'); function getU ...
- Flink常见问题解决记录
1.Hardlink from files of previous local stored state might cross devices 开启了state.backend.local-reco ...
- 达梦数据库manager工具坑
领导突然说要用达梦的数据库,对此完全没有了解. 安装没有问题. 但是这个工具真的坑到了. 因为之前用的都是navicat 干mysql ,创建数据的时候默认执行了. 但是这个工具tool/manage ...