Fix benchmark.knucleotide
						commit
						d9bdcaf3a2
					
				| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
Eric Mertens
 | 
			
		||||
| 
						 | 
				
			
			@ -4,38 +4,32 @@ USING: kernel io io.files splitting strings
 | 
			
		|||
 | 
			
		||||
IN: benchmark.knucleotide
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
: float>string ( float places -- string )
 | 
			
		||||
    swap >float number>string
 | 
			
		||||
    "." split1 rot
 | 
			
		||||
    over length over <
 | 
			
		||||
    [ CHAR: 0 pad-right ] 
 | 
			
		||||
    [ head ] if "." swap 3append
 | 
			
		||||
;
 | 
			
		||||
    [ head ] if "." swap 3append ;
 | 
			
		||||
 | 
			
		||||
: discard-lines ( -- )
 | 
			
		||||
    readln
 | 
			
		||||
    [ ">THREE" head? [ discard-lines ] unless ] when*
 | 
			
		||||
;
 | 
			
		||||
    [ ">THREE" head? [ discard-lines ] unless ] when* ;
 | 
			
		||||
 | 
			
		||||
: read-input ( -- input )
 | 
			
		||||
    discard-lines
 | 
			
		||||
    ">" read-until drop
 | 
			
		||||
    CHAR: \n swap remove >upper
 | 
			
		||||
;
 | 
			
		||||
    CHAR: \n swap remove >upper ;
 | 
			
		||||
 | 
			
		||||
: tally ( x exemplar -- b )
 | 
			
		||||
    clone tuck
 | 
			
		||||
    [
 | 
			
		||||
      [ [ 1+ ] [ 1 ] if* ] change-at
 | 
			
		||||
    ] curry each
 | 
			
		||||
;
 | 
			
		||||
    ] curry each ;
 | 
			
		||||
 | 
			
		||||
: small-groups ( x n -- b )
 | 
			
		||||
    swap
 | 
			
		||||
    [ length swap - 1+ ] 2keep
 | 
			
		||||
    [ >r over + r> subseq ] 2curry map
 | 
			
		||||
;
 | 
			
		||||
    [ >r over + r> subseq ] 2curry map ;
 | 
			
		||||
 | 
			
		||||
: handle-table ( inputs n -- )
 | 
			
		||||
    small-groups
 | 
			
		||||
| 
						 | 
				
			
			@ -46,29 +40,25 @@ IN: benchmark.knucleotide
 | 
			
		|||
      dup first write bl
 | 
			
		||||
      second 100 * over / 3 float>string print
 | 
			
		||||
    ] each
 | 
			
		||||
    drop
 | 
			
		||||
;
 | 
			
		||||
    drop ;
 | 
			
		||||
 | 
			
		||||
: handle-n ( inputs x -- )
 | 
			
		||||
    tuck length
 | 
			
		||||
    small-groups H{ } tally
 | 
			
		||||
    at [ 0 ] unless*
 | 
			
		||||
    number>string 8 CHAR: \s pad-right write
 | 
			
		||||
;
 | 
			
		||||
    number>string 8 CHAR: \s pad-right write ;
 | 
			
		||||
 | 
			
		||||
: process-input ( input -- )
 | 
			
		||||
    dup 1 handle-table nl
 | 
			
		||||
    dup 2 handle-table nl
 | 
			
		||||
    { "GGT" "GGTA" "GGTATT" "GGTATTTTAATT" "GGTATTTTAATTTATAGT" }
 | 
			
		||||
    [ [ dupd handle-n ] keep print ] each
 | 
			
		||||
    drop
 | 
			
		||||
;
 | 
			
		||||
    drop ;
 | 
			
		||||
 | 
			
		||||
: knucleotide ( -- )
 | 
			
		||||
    "extra/benchmark/knucleotide/knucleotide-input.txt" resource-path
 | 
			
		||||
    <file-reader>
 | 
			
		||||
    [ read-input ] with-stream
 | 
			
		||||
    process-input
 | 
			
		||||
;
 | 
			
		||||
    process-input ;
 | 
			
		||||
 | 
			
		||||
MAIN: knucleotide
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
The Great Computer Language Shootout's knucleotide benchmark to test
 | 
			
		||||
hashtables.
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ SYMBOL: cols
 | 
			
		|||
        building get >string
 | 
			
		||||
    ] with-scope ;
 | 
			
		||||
 | 
			
		||||
: mandel-main ( file -- )
 | 
			
		||||
: mandel-main ( -- )
 | 
			
		||||
    "mandel.ppm" resource-path <file-writer>
 | 
			
		||||
    [ mandel write ] with-stream ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,7 +49,7 @@ IN: benchmark.spectral-norm
 | 
			
		|||
 | 
			
		||||
HINTS: spectral-norm fixnum ;
 | 
			
		||||
 | 
			
		||||
: spectral-norm-main ( n -- )
 | 
			
		||||
: spectral-norm-main ( -- )
 | 
			
		||||
    2000 spectral-norm . ;
 | 
			
		||||
 | 
			
		||||
MAIN: spectral-norm-main
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ IN: benchmark.sum-file
 | 
			
		|||
: sum-file-loop ( n -- n' )
 | 
			
		||||
    readln [ string>number + sum-file-loop ] when* ;
 | 
			
		||||
 | 
			
		||||
: sum-file ( file -- n )
 | 
			
		||||
: sum-file ( file -- )
 | 
			
		||||
    <file-reader> [ 0 sum-file-loop ] with-stream . ;
 | 
			
		||||
 | 
			
		||||
: sum-file-main ( -- )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,11 +4,7 @@ IN: editors.gvim
 | 
			
		|||
TUPLE: gvim ;
 | 
			
		||||
 | 
			
		||||
M: gvim vim-command ( file line -- string )
 | 
			
		||||
    [
 | 
			
		||||
        "\"" % vim-path get % "\"" %
 | 
			
		||||
        vim-switches get [ % ] when*
 | 
			
		||||
        "+" % # " \"" % % "\"" %
 | 
			
		||||
    ] "" make ;
 | 
			
		||||
    [ "\"" % vim-path get % "\" \"" % swap % "\" +" % # ] "" make ;
 | 
			
		||||
 | 
			
		||||
T{ gvim } vim-editor set-global
 | 
			
		||||
"gvim" vim-path set-global
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue