Advertisement
Guest User

Untitled

a guest
Feb 26th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Object subclass: StringStat [
  2.     |numberOfStrings characters|
  3.  
  4.     init [
  5.         numberOfStrings := 0.
  6.         characters := Dictionary new.
  7.     ]
  8.    
  9.     + input [
  10.         |size|
  11.         numberOfStrings := numberOfStrings + 1.
  12.         size := (input size).
  13.         1 to: size do: [
  14.             :i |
  15.             |character currently|
  16.            
  17.            
  18.             character := (input at: i).
  19.             currently := characters at: character ifAbsent: [0].
  20.             currently := currently + 1.
  21.             characters at: character put: currently.
  22.         ].
  23.         ^self.
  24.     ]
  25.    
  26.     getStat: character default: defaultReturn [
  27.         (character isMemberOf: Character) ifFalse: [
  28.             'ERROR: The first argumentum must be a Character instance!' displayNl.
  29.             ^defaultReturn.
  30.         ].
  31.    
  32.         ^(characters at: character ifAbsent: [defaultReturn]).
  33.     ]
  34.    
  35.     displayOn [
  36.         ($a asInteger) to: ($z asInteger) do: [
  37.             :i |
  38.             |char|
  39.             char := i asCharacter.
  40.             char display.
  41.             ': ' display.
  42.             (self getStat: char default: 0) display.
  43.             ' ' display.
  44.         ].
  45.         ($A asInteger) to: ($Z asInteger) do: [
  46.             :i |
  47.             |char|
  48.             char := i asCharacter.
  49.             char display.
  50.             ': ' display.
  51.             (self getStat: char default: 0) display.
  52.             ' ' display.
  53.         ].
  54.         '. Collected from ' display. numberOfStrings display. ' Strings.' displayNl.
  55.     ]
  56. ]
  57.  
  58. StringStat class extend [
  59.     new [
  60.         |instance|
  61.         instance := super new.
  62.         instance init.
  63.         ^instance.
  64.     ]
  65. ]
  66.  
  67. |st input|
  68. st := StringStat new.
  69.  
  70. [true] whileTrue: [
  71.  
  72.     'Write a word: ' display.
  73.     input := stdin nextLine asString.
  74.    
  75.     st + input.
  76.  
  77.     'Stat at $a: ' display. (st getStat: $a default: -1) printNl.
  78.     'Stat at $t: ' display. (st getStat: $t default: -1) printNl.
  79.     'Stat at ''t'': ' display. (st getStat: 't' default: -1) printNl.
  80.  
  81.     st displayOn.
  82. ].
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement