การสร้างฮิสโตแกรม


12

เขียนโปรแกรมที่สั้นที่สุดที่สร้างฮิสโตแกรม (การแสดงกราฟิกของการกระจายข้อมูล)

กฎ:

  • ต้องสร้างฮิสโตแกรมขึ้นอยู่กับความยาวอักขระของคำ (เครื่องหมายวรรคตอนรวม) อินพุตในโปรแกรม (ถ้าคำมีความยาว 4 ตัวอักษรแถบที่เป็นตัวแทนของหมายเลข 4 จะเพิ่มขึ้น 1)
  • ต้องแสดงป้ายชื่อบาร์ที่สัมพันธ์กับความยาวอักขระที่แถบแสดง
  • ต้องยอมรับทุกตัวละคร
  • หากต้องปรับขนาดแท่งต้องมีวิธีที่แสดงในฮิสโตแกรม

ตัวอย่าง:

$ ./histogram This is a hole in one!
1 |#
2 |##
3 |
4 |###

$./histogram Extensive word length should not be very problematic.
1 |
2 |#
3 |#
4 |##
5 |
6 |##
7 |
8 |
9 |#
10|
11|
12|#

./histogram Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.
1 |##
2 |#######
3 |#
4 |#######
5 |###
6 |#
7 |##
8 |##
9 |##

4
โปรดเขียนข้อมูลจำเพาะแทนที่จะให้ตัวอย่างเพียงอย่างเดียวซึ่งโดยอาศัยอำนาจในการเป็นตัวอย่างเดียวไม่สามารถแสดงช่วงของรูปแบบผลลัพธ์ที่ยอมรับได้และไม่รับประกันว่าจะครอบคลุมทุกกรณี เป็นเรื่องดีที่มีกรณีทดสอบน้อย แต่สำคัญกว่าที่จะมีสเป็กที่ดี
Peter Taylor

@PeterTaylor ได้รับตัวอย่างเพิ่มเติมแล้ว
syb0rg

1
1 นี้ถูกแท็กกราฟิกส่งออกซึ่งหมายความว่ามันเป็นเรื่องของการวาดภาพบนหน้าจอหรือการสร้างไฟล์ภาพ แต่ตัวอย่างของคุณascii-ศิลปะ เป็นที่ยอมรับหรือไม่? (ถ้าไม่ใช่แล้ว plannabus อาจไม่มีความสุข) 2. คุณกำหนดเครื่องหมายวรรคตอนเป็นการสร้างอักขระที่นับได้ในคำ แต่คุณไม่ได้ระบุว่าอักขระใดแยกคำซึ่งอักขระอาจและอาจไม่เกิดขึ้นในอินพุตและวิธีจัดการอักขระที่อาจเกิดขึ้น แต่ไม่ใช่ตัวอักษรเครื่องหมายวรรคตอน หรือตัวแยกคำ 3. เป็นที่ยอมรับถูกต้องหรือถูกห้ามไม่ให้ขายแท่งให้มีขนาดเหมาะสมหรือไม่?
Peter Taylor

@PeterTaylor ฉันไม่ได้ติดแท็ก Ascii-art เพราะจริงๆแล้วมันไม่ใช่ "ศิลปะ" ทางออกของ Phannabus นั้นใช้ได้
syb0rg

@PeterTaylor ฉันได้เพิ่มกฎบางอย่างตามสิ่งที่คุณอธิบาย จนถึงการแก้ปัญหาทั้งหมดที่นี่เป็นไปตามกฎทั้งหมดยังคง
syb0rg

คำตอบ:


3

K, 35

{(1+!|/g)#`$(#:'=g:#:'" "\:x)#'"#"}

.

k){(1+!|/g)#`$(#:'=g:#:'" "\:x)#'"#"}"Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for."
1| ##
2| #######
3| #
4| #######
5| ###
6| #
7| ##
8| ##
9| ##

.

ตัวอย่างที่ยาวขึ้น

k){(1+!|/g)#`$(#:'=g:#:'" "\:x)#'"#"}"Please write a specification rather than giving a single example which, solely by virtue of being a single example, cannot express the range of acceptable output styles, and which doesnt guarantee to cover all corner cases. Its good to have a few test cases, but its even more important to have a good spec."
1 | #####
2 | ######
3 | #######
4 | ########
5 | ######
6 | ##############
7 | ###
8 | #
9 | ##
10| #
11|
12|
13| #

จะเกิดอะไรขึ้นถ้ามีคำที่มีตัวอักษรมากกว่า 9 ตัว?

มันใช้งานได้กับคำพูดของความยาวใด ๆ
tmartin

5

R, 55 47 ตัวอักษร

hist(a<-sapply(scan(,""),nchar),br=.5+0:max(a))

Luckily R มาพร้อมกับฟังก์ชั่นการพล็อตhistสำหรับฮิสโทแกรมที่นี่มาพร้อมกับbreaksข้อโต้แย้งที่แบ่งเป็น 0.5, 1.5, ... จนถึงสูงสุด (อินพุต) +0.5 sapply(scan(,""),nchar)รับอินพุต (ตาม stdin) แยกตามช่องว่างและนับจำนวนอักขระของแต่ละองค์ประกอบ

ตัวอย่าง:

hist(a<-sapply(scan(,""),nchar),br=.5+0:max(a))
1: Extensive word length should not be very problematic.
9: 
Read 8 items

ป้อนคำอธิบายรูปภาพที่นี่

hist(a<-sapply(scan(,""),nchar),br=.5+0:max(a))
1: Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.
28: 
Read 27 items

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข:

ชุดรูปแบบที่71 อักขระพร้อมป้ายกำกับแกนที่แต่ละค่าที่เป็นไปได้:

hist(a<-sapply(scan(,""),nchar),br=.5+0:max(a),ax=F);axis(1,at=1:max(a))

ป้อนคำอธิบายรูปภาพที่นี่


3
ฉันรักเมื่อภาษา verbose ปกติจะนำ!

สิ่งนี้ไม่เป็นไปตามข้อกำหนดอย่างไรก็ตาม ...
Doorknob

@Doorknob สเปคไม่สอดคล้องกับมัน?
plannapus

ตัวอย่างการทดสอบ
Doorknob

3
นี่เป็นตัวอย่างไม่ใช่ข้อกำหนด ...
plannapus

5

Python - 83 ตัวอักษร

ดูเหมือนว่าเราสามารถรับอินพุตจากที่ใดก็ได้ดังนั้นจะรับอินพุตระหว่างการดำเนินการมากกว่าจากบรรทัดคำสั่งและใช้คำแนะนำของ Ejrb เพื่อทำให้สั้นลง 8

s=map(len,raw_input().split())
c=0;exec'c+=1;print"%3d|"%c+"#"*s.count(c);'*max(s)

Python - 91 ตัวอักษร

สิ่งนี้จะล้มทับด้วยคำพูด

import sys;s=map(len,sys.argv[1:])
for i in range(1,max(s)+1):print"%3d|"%i+'#'*s.count(i)

การป้อนข้อมูล:

> python hist.py Please write a specification rather than giving a single example which, solely by virtue of being a single example, cannot express the range of acceptable output styles, and which doesnt guarantee to cover all corner cases. Its good to have a few test cases, but its even more important to have a good spec.

เอาท์พุท:

  1|#####
  2|######
  3|#####
  4|##########
  5|######
  6|#############
  7|####
  8|#
  9|##
 10|#
 11|
 12|
 13|#

2
ดีที่คุณสามารถโกน 4 ตัวอักษรโดย reworking บรรทัดที่สองของคุณ (ไม่มีการเปลี่ยนแปลงขั้นตอนวิธี) เพื่อการใช้งานexecและสตริง:c=0;exec'c+=1;print"%3d|"%c+"#"*s.count(c);'*max(s)
ejrb

4

Haskell - 126 ตัวอักษร

p[d]=[' ',d];p n=n
h l=[1..maximum l]>>= \i->p(show i)++'|':(l>>=($"#").drop.abs.(i-))++"\n"
main=interact$h.map length.words

สิ่งนี้รับอินพุตจากstdinไม่ใช่บรรทัดคำสั่ง:

& head -500 /usr/share/dict/words | runhaskell 15791-Histogram.hs 
 1|##
 2|##
 3|######
 4|###############
 5|################################################
 6|###############################################################
 7|###################################################################
 8|###########################################################################
 9|#############################################################
10|##########################################################
11|#########################################################
12|#########################
13|#######
14|###
15|#####
16|###
17|#
18|
19|#
20|#

ดูดีกับผม! +1
syb0rg

3

Python 3.3 (93)

a=[len(i) for i in input().split()]
for i in range(1,max(a)+1):
 print(i,'|',"#"*a.count(i))

เอาต์พุต:
(บรรทัดแรกคือสตริงอินพุต)

Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.
1 | ##
2 | #######
3 | #
4 | #######
5 | ###
6 | #
7 | ##
8 | ##
9 | ##

มันไม่ได้พิสูจน์ว่าตัวเลขเป็นโซลูชัน Python ของ Lego Stormtroopr (ซึ่งสั้นกว่าของฉัน) แต่มันเป็นรายการแรกของฉันที่เคยเข้าร่วมการแข่งขันกอล์ฟดังนั้นฉันอาจทิ้งมันไว้ที่นี่ฉันเดา :)


คุณสามารถแก้ไขตัวอย่างของฮิสโตแกรมที่สร้างโดยโปรแกรมนี้ได้หรือไม่?
syb0rg

ใช่ แต่ฉันเพิ่งสังเกตเห็นว่ามันมีปัญหาเดียว: มันไม่ได้พิสูจน์ว่าตัวเลขเป็นวิธีแก้ปัญหาของ Lego Stormtroopr ดังนั้นฉันจึงคิดที่จะตอบคำถาม
Roberto

ตราบใดที่มีป้ายกำกับสำหรับแถบที่แสดงคำตอบก็สามารถใช้ได้
syb0rg

ตกลงทำไปแล้ว! :)
Roberto

สิ่งนี้รับอินพุตจากอินพุตไม่ใช่จากอาร์กิวเมนต์ @ syb0rg ถูกต้องหรือไม่

3

Perl, 56

$d[y///c].='#'for@ARGV;printf"%2d|$d[$_]
",$_ for+1..$#d

เพิ่ม @ new manatwork ของการแนะนำและคำขึ้นบรรทัดใหม่ตามตัวอักษรขอบคุณมาก! เพิ่มการอัปเดตของ @ chinese_perl_goth

การใช้งาน: บันทึกเป็น hist.pl และเรียกใช้ perl hist.pl This is a test

ตัวอย่างผลลัพธ์:

$perl ~/hist.pl This is a test of the histogram function and how it will count the number of words of specific lengths. This sentence contains a long word 'complexity'.
 1|##
 2|#####
 3|####
 4|######
 5|##
 6|#
 7|
 8|#####
 9|#
10|
11|#

1
ทำไมไม่ใช้printf? คุณสามารถสำรองอักขระบางตัวในการจัดรูปแบบ $d[y///c]++for@ARGV;shift@d;printf"%2d|%s\n",++$i,"#"x$_ for@dและบางมากขึ้นโดยการเปลี่ยนจากกัญชาไปยังอาร์เรย์:
จัดการ

ฉันสามารถดูตัวอย่างของโปรแกรมนี้ในที่ทำงานได้หรือไม่?
syb0rg

@ งานฝีมือprintfไม่ได้เกิดขึ้นกับฉันเลยด้วยเหตุผลบางอย่างฉันไม่คิดว่าฉันจะได้รับผลที่ฉันต้องการด้วยอาเรย์ที่น่าทึ่ง! @ syb0rg กำลังเพิ่ม
Dom Hastings

2
golfed บางมากขึ้นได้ลงไปที่ 57 bytes:$d[y///c].='#'for@ARGV;printf"%2d|$d[$_]\n",$_ for+1..$#d
จีน perl goth

1
เราพลาดเคล็ดลับง่ายที่สุด: ใช้ตัวอักษรขึ้นบรรทัดใหม่แทน\nการสำรองอักขระเพิ่มอีก 1 ตัว ฉันหมายถึงสิ่งนี้: pastebin.com/496z2a0n
จัดการ

3

J, 48 47 46 45 43 43 ตัวอักษร

(;#&'#')/"1|:((],[:+/=/)1+[:i.>./)$;._1' ',

การใช้งาน:

   (;#&'#')/"1|:((],[:+/=/)1+[:i.>./)$;._1' ','Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.'
┌─┬───────┐
│1│##     │
├─┼───────┤
│2│#######│  
├─┼───────┤
│3│#      │
├─┼───────┤
│4│#######│
├─┼───────┤
│5│###    │
├─┼───────┤
│6│#      │
├─┼───────┤
│7│##     │
├─┼───────┤
│8│##     │
├─┼───────┤
│9│##     │
└─┴───────┘

Tacit, 38 [:((](;#&'#')"0[:+/=/)1+[:i.>./)#@>@;:: ลองออนไลน์!
โยนาห์

2

ทับทิม, 98 85

a=$*.group_by &:size
1.upto(a.max[0]){|i|b=a.assoc i
puts"%-2i|#{b&&?#*b[1].size}"%i}

ไม่ค่อยเล่นกอล์ฟมากนัก จะตีกอล์ฟทีหลัง

c:\a\ruby>hist This is a test for the histogram thingy. yaaaaaaaaaaaay
1 |#
2 |#
3 |##
4 |##
5 |
6 |
7 |#
8 |
9 |#
10|
11|
12|
13|
14|#

ทำงานได้ดี (++ โหวตนับ) อะไรที่ฉันสามารถทำได้เพื่อตอบคำถามให้ดีขึ้น?
syb0rg

1
@ syb0rg IMO คำถามนี้เป็นคำพูดที่ดีตัวอย่างพูดด้วยตนเอง แม้ว่าครั้งสุดท้ายของคุณดูเหมือนจะมีข้อผิดพลาด ... ฉันนับ 2 8 ตัวอักษรคำ (สร้างและสร้าง) และ 2 คำ 9 ตัวอักษร (ฮิสโตแกรมฮิสโตแกรม)
Doorknob

เย็น. คุณสามารถเปลี่ยนด้วยb ?(?#*b[1].size):'' b&&?#*b[1].size
จัดการ

2

Powershell, 97 93

$a=@{};$args-split ' '|%{$a[$_.length]++};1..($a.Keys|sort)[-1]|%{"{0,-2} |"-f $_+"#"*$a[$_]}

ตัวอย่าง:

PS Z:\> .\hist.ps1 This is an example of this program running
1  |
2  |###
3  |
4  |##
5  |
6  |
7  |###

ฉันสามารถดูตัวอย่างของโปรแกรมนี้ทำงานได้หรือไม่
syb0rg

@ syb0rg แน่นอนฉันได้อัปเดตคำตอบด้วยตัวอย่างแล้ว
Danko Durbić

ดูดี! +1 ถึงคุณ!
syb0rg

ดี คุณสามารถลบช่องว่างเพิ่มเติมและบันทึก 6 ไบต์$a=@{};-split$args|%{$a[$_.length]++};1..($a.Keys|sort)[-1]|%{"{0,-2}|"-f$_+"#"*$a[$_]}
mazzy

2

APL (42)

⎕ML←3⋄K,⊃⍴∘'▓'¨+⌿M∘.=K←⍳⌈/M←↑∘⍴¨I⊂⍨' '≠I←⍞

อาจจะสั้นกว่านี้หากฉันสามารถข้ามบรรทัดที่ค่าเป็น 0

คำอธิบาย:

  • ⎕ML←3: ตั้งค่าระดับการย้ายข้อมูลเป็น 3 (ทำให้(พาร์ติชัน) มีประโยชน์มากขึ้น)
  • I⊂⍨' '≠I←⍞: อ่านอินพุตแบ่งช่องว่าง
  • M←↑∘⍴¨: รับขนาดมิติแรกของแต่ละรายการ (ความยาวคำ) และเก็บไว้ M
  • K←⍳⌈/M: รับตัวเลขตั้งแต่ 1 ถึงค่าสูงสุดMเก็บไว้ในK
  • +⌿K∘.=Mสำหรับค่าในแต่ละดูกี่ครั้งก็มีอยู่ในMK
  • ⊃⍴∘'▓'¨: สำหรับแต่ละค่าในนั้นรับรายการs จำนวนมากและจัดรูปแบบเป็นเมทริกซ์
  • K,: เติมแต่ละค่าลงในKแต่ละแถวในเมทริกซ์โดยกำหนดป้ายกำกับ

เอาท์พุท:

      ⎕ML←3⋄K,⊃⍴∘'▓'¨+⌿M∘.=K←⍳⌈/M←↑∘⍴¨I⊂⍨' '≠I←⍞
This is a hole in one!
1 ▓  
2 ▓▓ 
3    
4 ▓▓▓
      ⎕ML←3⋄K,⊃⍴∘'▓'¨+⌿M∘.=K←⍳⌈/M←↑∘⍴¨I⊂⍨' '≠I←⍞
Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.
1 ▓▓     
2 ▓▓▓▓▓▓▓
3 ▓      
4 ▓▓▓▓▓▓▓
5 ▓▓▓    
6 ▓      
7 ▓▓     
8 ▓▓     
9 ▓▓     

2

Mathematica 97

Histogram["" <> # & /@ StringCases[StringSplit[InputString[]], WordCharacter] /. 
a_String :> StringLength@a]

เมื่อฉันป้อนข้อความของการประกาศอิสรภาพเป็นสตริงเดียว (ผ่านการตัดและวางแน่นอน) ผลลัพธ์ที่สร้างขึ้นคือ:

ประกาศอิสรภาพ


2

มา, 201

สนุกมาก แต่การส่งทับทิมของฉันแข่งขันได้มากกว่า ;-)

variable w 99 cells allot w 99 cells erase : h begin
1 w next-arg ?dup while swap drop dup w @ > if dup w
! then cells + +! repeat w @ 1+ 1 ?do i . 124 emit i
cells w + @ 0 ?do 35 emit loop cr loop ; h

วิ่งตัวอย่าง:

$ gforth histo.fth Forth words make for tough golfing!
1 |
2 |
3 |#
4 |#
5 |###
6 |
7 |
8 |#

ความยาวคำสูงสุดคือ 99


2

ทับทิม, 79

(1..(w=$*.group_by &:size).max[0]).map{|i|puts"%2i|#{?#*w.fetch(i,[]).size}"%i}

ตัวอย่างการเรียกใช้:

$ ruby hist.rb Histograms, histograms, every where, nor any drop to drink.
 1|
 2|#
 3|##
 4|#
 5|#
 6|##
 7|
 8|
 9|
10|
11|##

โปรดดูการส่งต่อของฉันเพื่อหัวเราะ


2

ทับทิม 1.8.7, 74

ความแตกต่างเล็กน้อยจากโซลูชั่นทับทิมอื่น ๆ :

i=0;$*.map{|v|v.size}.sort.map{|v|$><<(i+1..v).map{|n|"
%2i:"%i=n}+['#']}

เอาท์พุท:

ruby hist.rb `head -400 /usr/share/dict/words`

 1:#
 2:###
 3:######
 4:#############################
 5:#####################################################
 6:############################################################
 7:########################################################################
 8:######################################################
 9:############################################################
10:########################
11:###########################
12:######
13:#####

ฉันไม่เห็นการส่งนี้ในตอนแรกขอโทษ! +1
syb0rg

1

จาวาสคริปต์ ( 159 133)

ไม่สามารถแข่งขันได้อย่างแน่นอน แต่จนถึงตอนนี้โซลูชัน JavaScript เท่านั้น ขอขอบคุณที่ @manatwork String.replaceสำหรับเคล็ดลับเกี่ยวกับการใช้

prompt(o=[]).replace(/\S+/g,function(p){o[l=p.length]=(o[l]||'')+'#'});for(i=1;i<o.length;)console.log(i+(i>9?"|":" |")+(o[i++]||""))

อินพุต

Code Golf เป็นเว็บไซต์คำถามและคำตอบสำหรับผู้ชื่นชอบการเขียนโปรแกรมไขปริศนาและนักเล่นรหัส มันสร้างและดำเนินการโดยคุณโดยเป็นส่วนหนึ่งของเครือข่าย Stack Exchange ของไซต์ถามตอบ ด้วยความช่วยเหลือของคุณเราทำงานร่วมกันเพื่อสร้างคลังปริศนาการเขียนโปรแกรมและโซลูชันของพวกเขา

เอาท์พุต

1 |##
2 |#######
3 |#########
4 |########
5 |######
6 |###
7 |####
8 |####
9 |
10|#
11|###

1
อันที่จริงนี่ไม่ใช่เขตข้อมูลที่ JavaScript ดีขึ้น แต่ด้วยreplace()แทนsplit()+ forและArrayแทนObjectตัวแปรความยาว + prompt(o=[]).replace(/\S+/g,function(p){o[l=p.length]=(o[l]||"")+"#"});for(i=1;i<o.length;)console.log(i+(i>9?"|":" |")+(o[i++]||""))แยกต่างหากสามารถลดลงได้ด้วยตัวอักษรไม่กี่: (และสั้นลงใน Harmony prompt(o=[]).replace(/\S+/g,p=>o[l=p.length]=(o[l]||"")+"#");for(i=1;i<o.length;)console.log(i+(i>9?"|":" |")+(o[i++]||""))
:.

@Manatwork การละเมิดที่ดีที่.lengthนั่น
quietmint

1

ทุบตีบริสุทธิ์ 120

d="$@"
d=${d//[ -z]/#}
for a;do((b[${#a}]++));done
e="${!b[@]}"
for((i=1;i<=${e##* };i++));do
echo $i\|${d:0:b[i]}
done

ตัวอย่าง:

./histogram.sh Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.
1|##
2|#######
3|#
4|#######
5|###
6|#
7|##
8|##
9|##

บันทึก 8 ตัวอักษรโดยใช้หนึ่งส้อมเพื่อtr: 112

for a;do((b[${#a}]++));done
e="${!b[@]}"
for((i=1;i<=${e##* };i++));do
printf "%d|%${b[i]}s\n" $i
done|tr \  \#

ให้ผลลัพธ์เดียวกัน:

bash -c 'for a;do((b[${#a}]++));done;e="${!b[@]}";for((i=1;i<=${e##* };i++));
do printf "%d|%${b[i]}s\n" $i;done|tr \  \#' -- $( sed 's/<[^>]*>//g;
s/<[^>]*$//;s/^[^<]*>//' < /usr/share/scribus/loremipsum/english.xml )

แสดงผล (บนโฮสต์ของฉัน :)

1|############################################################
2|#################################################################################################################################################################################################################
3|####################################################################################################################################################################################################################################################
4|####################################################################################################################################################################################################
5|####################################################################################################################################################################
6|#######################################################################################
7|##########################################################################################
8|###################################################
9|###############################
10|####################
11|#########
12|############
13|#####
14|####
15|##
16|
17|
18|
19|
20|
21|
22|
23|
24|
25|
26|
27|
28|
29|
30|
31|
32|
33|
34|#

1

PHP, 162

<?php error_reporting(0);$b=0;while($argv[$b])$c[strlen($argv[++$b])]++;for($t=1;$t<=max(array_keys($c));$t++)echo $t.'|'.($c[$t]?str_repeat('#',$c[$t]):'')."\n";

การใช้งาน:

php histogram.php Very long strings of words should be just as easy to generate a histogram just as short strings of words are easy to generate a histogram for.
1|##
2|#######
3|#
4|#######
5|###
6|#
7|##
8|##
9|##

1

8th , 162 ไบต์

รหัส

a:new ( args s:len nip tuck a:@ ( 0 ) execnull rot swap n:1+ a:! ) 0 argc n:1- loop 
a:len n:1- ( dup . "|" . a:@ ( 0 ) execnull "#" swap s:* . cr ) 1 rot loop bye

การใช้

$ 8th histogram.8th Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura

เอาท์พุต

1|
2|##
3|####
4|#
5|##
6|###
7|
8|#

โค้ดที่ไม่ได้รับการปรับปรุง ( SEDคือ Stack Effect Diagram)

a:new               \ create an empty array 
( 
    args s:len      \ length of each argument
                    \ SED: array argument lengthOfArgument
    nip             \ SED: array lengthOfArgument
    tuck            \ SED: lengthOfArgument array lengthOfArgument
    a:@             \ get item array at "lengthOfArgument" position
    ( 0 ) execnull  \ if null put 0 on TOS
                    \ SED: lengthOfArgument array itemOfArray
    rot             \ SED: array itemOfArray lengthOfArgument    
    swap            \ SED: array lengthOfArgument itemOfArray
    n:1+            \ increment counter for the matching length
    a:!             \ store updated counter into array 
) 0 argc n:1- loop  \ loop through each argument
\ print histogram
a:len n:1- ( dup . "|" . a:@ ( 0 ) execnull "#" swap s:* . cr ) 1 rot loop 
bye                 \ exit program
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.