~~stoggle_buttons~~
====== Premios código del año ======
Cada año se entregan los premios al código más bonito, más complicado o que ha sacado de un apuro mayor, o
aquel con el que, a pesar de que [[https://xkcd.com/1319/|te llevó más tiempo]] diseñarlo y programarlo que [[https://xkcd.com/1205/|hacer a mano el problema que resuelve]], no
pudiste evitar derramar una lágrima de emoción.
====== Candidatos 2021 ======
===== Regex the vim (but this is the remix) =====
:%s/^\([^#]\)\(.*\)focal\(.*\)/\1\2bionic\3/
Quitando las líneas que empiezan por "#", te reemplaza "focal" por "bionic" (muy útil para cambiar la versión de un /etc/apt/sources.list.d/nosequé si quieres mantener los comentarios con una versión alternativa
====== Candidatos 2020 ======
===== Filtro recursivo para árboles de Org Mode GANADORA 2020 =====
Luego me di cuenta de que es muy ineficiente, pero como función es muy bonita
from typing import Callable, Iterable
from orgparse.node import OrgBaseNode
def recursive_filter(condition: Callable[[OrgBaseNode], bool], root: Iterable[OrgBaseNode]) -> Iterable[OrgBaseNode]:
"""recursively trasvese all possible nodes from root and return only those for which
condition returns True
Args:
condition: condition which evaluates to true
nodes: nodes to be traversed
Yields each node with matches the condition
"""
for node in root:
if condition(node):
yield node
if node.children:
yield from recursive_filter(condition, node.children)
===== Easter egg del zen de python =====
import this
# this.s es un texto cifrado con el diccionario this.d
print(''.join(list(map(lambda x: x if x else ' ', map(this.d.get, this.s))))
====== Candidatos 2019 ======
===== regex de vim =====
s/\(.*p\) \(".*"\) u 2:\([0-9]*\):\([0-9]* w e t ".*"\)/\1 \2 u 2:\3:\4, "" u 2:\3 w l smooth csplines
transforma
[re]p "ising2d_16.dat" u 2:18:19 w e t "L16"
en
[re]p "ising2d_16.dat" u 2:18:19 w e t "L16", "" u 2:18 w l smooth csplines
===== parsear kwargs de python =====
option_dict = {k: kwargs.get(k, d) for k, d in zip(keys, default)}
# Extrae de los kwargs sólo los argumentos que necesitas y los remplaza por valores con defecto si están vacíos
# Se pueden pasar a las funciones más tarde como **option_dict
===== Animación interactiva del control de la ariposa de Lorenz GANADORA 2019 =====
Al ser una animación interactiva el código no es tan vistoso como el resultado:
{{:Lorenz.mp4?800|}}