Skip to content

Instantly share code, notes, and snippets.

@NalaGinrut
NalaGinrut / s2b.scm
Created October 19, 2012 08:54
string->binary
(use-modules (rnrs))
(define* (string->binary str #:key (base 16) (endiannes 'little))
(let ((n (string->number str base))
(f (case endiannes
((big) identity)
((little) reverse)
(else (error "wrong endiannes" endiannes)))))
(let lp ((n n) (result '()))
(if (zero? n)
@NalaGinrut
NalaGinrut / fix-name.scm
Created August 14, 2012 03:26
patches set name fixing
#! /usr/local/bin/guile \
-e main -s
!#
(use-modules (ice-9 regex) (ice-9 ftw))
(define (sub from to str) (regexp-substitute #f (string-match from str) 'pre to 'post))
(define (usage args) (format #t "~a from to path~%" (car args)))
(define main
@NalaGinrut
NalaGinrut / srfi-28-compiler.scm
Created July 24, 2012 03:03 — forked from ijp/srfi-28-compiler.scm
turn format strings into a procedure
#!r6rs
;; a toy for turning srfi 28 format strings into a procedure, that
;; performs the format, and outputs to stdout
(library (toys srfi-28-compiler)
(export format-string->procedure)
(import (rnrs)
(only (srfi :1 lists) fold)
(srfi :8 receive))
(define (escape-char? char)
@NalaGinrut
NalaGinrut / wrp.scm
Created July 20, 2012 10:28
weekly report parser
#! /usr/local/bin/guile \
-e main -s
!#
(define main
(lambda args
(let ((wrl (primitive-eval (read))))
(for-each (lambda (x)
(format #t "[~a]:~%" (car x))
@NalaGinrut
NalaGinrut / ft1.scm
Created July 20, 2012 06:08
the shortest snake arrange algorithm (slow version)
(define (main . args)
(let* ((ll ((@ (srfi srfi-1) iota) (read) 1)) (len (length ll)) (m (1- (/ len 2))))
(display len)(newline)
(let lp((a (list-head ll (1+ m))) (b (list-tail ll (1+ m))) (n 1))
(and (< n len) (for-each (lambda (x y) (display x)(display " ")(display y)(display " ")) a b)(newline)
(lp `(1 ,(car b) ,@(cdr a)) `(,@(cdr b) ,(list-ref a m)) (1+ n))))))
@NalaGinrut
NalaGinrut / ft2.scm
Created July 20, 2012 06:05
the shortest snake arrange algorithm
#! /usr/local/bin/guile \
-e main -s
!#
(define (main . args)
(let* ((ll ((@ (srfi srfi-1) iota) (read) 1)) (len (length ll)) (m (1- (/ len 2))))
(display len)(newline)
(let lp((a (list-head ll (1+ m))) (b (list-tail ll (1+ m))) (n 1))
(and (< n len) (for-each (lambda (x y) (display x)(display " ")(display y)(display " ")) a b)(newline)
(lp (append (list 1 (car b)) (cdr a)) (append (cdr b) (list (list-ref a m))) (1+ n))))))