fork download
  1. # HelloWorld013.tcl - 2015-06-24
  2. # http://i...content-available-to-author-only...e.com/1t0KK7
  3.  
  4. # foreach, unicode-chars, append, lappend, array,parray, dict
  5.  
  6. proc dumpArray {A} {
  7. # show contents of an array
  8. puts "dumpArray:"
  9. foreach key [array names A] {
  10. set val $A($key)
  11. puts "$key : $val"
  12. }
  13. }
  14.  
  15. set deckStr "" ;# create empty string
  16. set deckList {} ;# create empty list
  17. array set deckArray {} ;# create empty array
  18.  
  19. puts "Deck of cards:"
  20. set i 0
  21. # see also: http://w...content-available-to-author-only...l.tk/26403 : [HTML character entity references]
  22. # Spades Hearts Diamonds Clubs
  23. foreach {suit sym} { S \u2660 H \u2665 D \u2666 C \u2663 } {
  24. foreach rank { A 2 3 4 5 6 7 8 9 10 J Q K } { ;# Ace 2 .. 10 Jack Queen King
  25. incr i
  26. set card "$rank$sym"
  27. puts -nonewline " $rank$suit=$card "
  28.  
  29. append deckStr $card ;# add card to string
  30. lappend deckList $card ;# add card to list
  31. set deckArray($i) $card ;# add card to array
  32. }
  33. puts ""
  34. }
  35. set maxCard $i
  36.  
  37. puts "\ndeckStr : $deckStr" ;# note: no spaces between
  38.  
  39. puts "\ndeckList : $deckList"
  40.  
  41. puts "\nparray:"
  42. parray deckArray ;# show all elements, unsorted
  43.  
  44. puts "Done."
  45. exit
  46.  
  47. ###
  48.  
  49. puts "\ndeckArray (numeric): "
  50. # This works for numeric keys only:
  51. for {set i 1; set n 1} {$i<=$maxCard} {incr i; incr n} {
  52. puts -nonewline "$i:$deckArray($i) "
  53. if { $n >= 13 } { puts ""; set n 0 } ;# newline
  54. }
  55.  
  56. #dumpArray $deckArray
  57. puts "\ndeckArray (any): "
  58. # This works for any type of keys, but with no specific order:
  59. set n 0
  60. foreach key [array names deckArray] {
  61. incr n
  62. set val $deckArray($key)
  63. puts -nonewline "$key:$val "
  64. if { $n >= 8 } { puts ""; set n 0 } ;# newline
  65. }
  66. puts "\nDone."
  67. exit
  68.  
  69. puts "\nThe list with the deck of cards has [llength $deck] elements:"
  70.  
  71. for {set i 0; set n 0} {$i < [llength $deck]} {incr i; incr n} {
  72. if { $n >= 8 } { puts ""; set n 0 } ;# newline after 8 cards
  73. if { $n == 4 } { puts -nonewline " " } ;# extra space after 4 cards
  74.  
  75. set c [lindex $deck $i] ;# get element #i from the list
  76. puts -nonewline "$i: $c "
  77. }
  78. puts "\nDone."
  79. #.
Success #stdin #stdout 0s 15904KB
stdin
Standard input is empty
stdout
Deck of cards:
 AS=A♠  2S=2♠  3S=3♠  4S=4♠  5S=5♠  6S=6♠  7S=7♠  8S=8♠  9S=9♠  10S=10♠  JS=J♠  QS=Q♠  KS=K♠ 
 AH=A♥  2H=2♥  3H=3♥  4H=4♥  5H=5♥  6H=6♥  7H=7♥  8H=8♥  9H=9♥  10H=10♥  JH=J♥  QH=Q♥  KH=K♥ 
 AD=A♦  2D=2♦  3D=3♦  4D=4♦  5D=5♦  6D=6♦  7D=7♦  8D=8♦  9D=9♦  10D=10♦  JD=J♦  QD=Q♦  KD=K♦ 
 AC=A♣  2C=2♣  3C=3♣  4C=4♣  5C=5♣  6C=6♣  7C=7♣  8C=8♣  9C=9♣  10C=10♣  JC=J♣  QC=Q♣  KC=K♣ 

deckStr  : A♠2♠3♠4♠5♠6♠7♠8♠9♠10♠J♠Q♠K♠A♥2♥3♥4♥5♥6♥7♥8♥9♥10♥J♥Q♥K♥A♦2♦3♦4♦5♦6♦7♦8♦9♦10♦J♦Q♦K♦A♣2♣3♣4♣5♣6♣7♣8♣9♣10♣J♣Q♣K♣

deckList : A♠ 2♠ 3♠ 4♠ 5♠ 6♠ 7♠ 8♠ 9♠ 10♠ J♠ Q♠ K♠ A♥ 2♥ 3♥ 4♥ 5♥ 6♥ 7♥ 8♥ 9♥ 10♥ J♥ Q♥ K♥ A♦ 2♦ 3♦ 4♦ 5♦ 6♦ 7♦ 8♦ 9♦ 10♦ J♦ Q♦ K♦ A♣ 2♣ 3♣ 4♣ 5♣ 6♣ 7♣ 8♣ 9♣ 10♣ J♣ Q♣ K♣

parray:
deckArray(1)  = A♠
deckArray(10) = 10♠
deckArray(11) = J♠
deckArray(12) = Q♠
deckArray(13) = K♠
deckArray(14) = A♥
deckArray(15) = 2♥
deckArray(16) = 3♥
deckArray(17) = 4♥
deckArray(18) = 5♥
deckArray(19) = 6♥
deckArray(2)  = 2♠
deckArray(20) = 7♥
deckArray(21) = 8♥
deckArray(22) = 9♥
deckArray(23) = 10♥
deckArray(24) = J♥
deckArray(25) = Q♥
deckArray(26) = K♥
deckArray(27) = A♦
deckArray(28) = 2♦
deckArray(29) = 3♦
deckArray(3)  = 3♠
deckArray(30) = 4♦
deckArray(31) = 5♦
deckArray(32) = 6♦
deckArray(33) = 7♦
deckArray(34) = 8♦
deckArray(35) = 9♦
deckArray(36) = 10♦
deckArray(37) = J♦
deckArray(38) = Q♦
deckArray(39) = K♦
deckArray(4)  = 4♠
deckArray(40) = A♣
deckArray(41) = 2♣
deckArray(42) = 3♣
deckArray(43) = 4♣
deckArray(44) = 5♣
deckArray(45) = 6♣
deckArray(46) = 7♣
deckArray(47) = 8♣
deckArray(48) = 9♣
deckArray(49) = 10♣
deckArray(5)  = 5♠
deckArray(50) = J♣
deckArray(51) = Q♣
deckArray(52) = K♣
deckArray(6)  = 6♠
deckArray(7)  = 7♠
deckArray(8)  = 8♠
deckArray(9)  = 9♠
Done.