Sponsored Content
Full Discussion: Venn Data Maker
Homework and Emergencies Emergency UNIX and Linux Support Venn Data Maker Post 302979916 by RudiC on Sunday 21st of August 2016 01:14:20 PM
Old 08-21-2016
Another small refinement:
Code:
awk '
NR==1   {print "Name," $0
         CC = NF
         for (i=1; i<2^CC; i++) Set[i] = 0
         next
        }

        {for (i=1; i<=CC; i++)  {T[$i]
                                 R[$i,i] = 1
                                }
        }

END     {delete T[""]
         for (t in T)   {TMP = 0
                         for (i=1; i<=CC; i++)  {printf "%s,%s%s", i==1?t:_, R[t,i]+0, i==CC?RS:_
                                                 TMP = TMP + 2^(i-1)*R[t,i]
                                                }
                         Set[TMP]++
                        }
         for (i=1; i<2^CC; i++) {TMP = 0
                                 for (j=0; j<CC; j++) if (int(i/2^j)%2) TMP = TMP * 10 + j+1
                                 printf "Set%d_%s=%d" RS, TMP, TMP<10?"unique":"common", Set[i] |  "sort -k1.4,1n"
                                }
        }
' FS=, file
Name,Set1,Set2,Set3,S4,S5
g1,1,1,1,1,1
g2,1,1,0,1,0
g3,0,0,1,1,0
g4,1,0,0,1,1
g5,0,1,1,1,1
g6,1,0,0,1,1
g7,0,1,0,1,1
g8,0,0,1,0,1
Set1_unique=0
Set2_unique=0
Set3_unique=0
Set4_unique=0
Set5_unique=0
Set12_common=0
Set13_common=0
Set14_common=0
Set15_common=0
Set23_common=0
Set24_common=0
Set25_common=0
Set34_common=1
Set35_common=1
Set45_common=0
Set123_common=0
Set124_common=1
Set125_common=0
Set134_common=0
Set135_common=0
Set145_common=2
Set234_common=0
Set235_common=0
Set245_common=1
Set345_common=0
Set1234_common=0
Set1235_common=0
Set1245_common=0
Set1345_common=0
Set2345_common=1
Set12345_common=1

This User Gave Thanks to RudiC For This Post:
 

2 More Discussions You Might Find Interesting

1. Programming

maker

how can i remake a program to crash a harddrive using unix:rolleyes: (2 Replies)
Discussion started by: flomper
2 Replies

2. Shell Programming and Scripting

Venn diagram results using awk

Hi, I have the following files 1.txt a 10 b 11 c 12 d 13 e 14 f 15 g 16 h 17 i 18 j 19 k 20 2.txt a 21 b 22 (15 Replies)
Discussion started by: jacobs.smith
15 Replies
Sort::Key::Maker(3pm)					User Contributed Perl Documentation				     Sort::Key::Maker(3pm)

NAME
Sort::Key::Maker - multikey sorter creator SYNOPSYS
# create a function that sorts strings by length: use Sort::Key::Maker sort_by_length => sub { length $_}, qw(integer); # create a multikey sort function; # first key is integer sorted in descending order, # second key is a string in default (ascending) order: use Sort::Key::Maker ri_s_keysort => qw(-integer string); # some sample data... my @foo = qw(foo bar t too tood mama); # and now, use the sorter functions previously made: # get the values on @foo sorted by length: my @sorted = sort_by_length @foo; # sort @foo inplace by its length and then by its value: ri_s_keysort_inplace { length $_, $_ } @foo; DESCRIPTION
Sort::Key::Maker is a pragmatic module that provides an easy to use interface to Sort::Key multikey sorting functionality. It creates multikey sorting functions on the fly for any key type combination and exports them to the caller package. The key types natively accepted are: string, str, locale, loc, integer, int, unsigned_integer, uint, number, num and support for other types can be added via Sort::Key::Register (or also via Sort::Key::register_type()). USAGE use Sort::Key::Maker foo_sort => @keys; exports two subroutines to the caller package: "foo_sort (&@)" and "foo_sort_inplace (&@)". Those two subroutines require a sub reference as their first argument and then respectively, the list to be sorted or an array. For instance: use Sort::Key::Maker bar_sort => qw(int int str); @bar=qw(doo tomo 45s tio); @sorted = bar_sort { unpack "CCs", $_ } @bar; # or sorting @bar inplace bar_sort_inplace { unpack "CCs", $_ } @bar; use Sort::Key::Maker foo_sort => &genmultikey, @keys; when the first argument after the sorter name is a reference to a subroutine it is used as the multikey extraction function. The generated sorter functions doesn't require neither accept one, i.e.: use Sort::Key::Maker sort_by_length => sub { length $_ }, 'int'; my @sorted = sort_by_length qw(foo goo h mama picasso); SEE ALSO
Sort::Key, Sort::Key::Register. Sort::Maker also available from CPAN provides similar functionality. AUTHOR
Salvador Fandin~o, <sfandino@yahoo.com> COPYRIGHT AND LICENSE
Copyright (C) 2005 by Salvador Fandin~o This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available. perl v5.14.2 2010-04-16 Sort::Key::Maker(3pm)
All times are GMT -4. The time now is 12:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy