~~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|}}