Sponsored Content
Top Forums Shell Programming and Scripting awk diamond code golf (just for fun!) Post 302986573 by RudiC on Sunday 27th of November 2016 02:24:59 PM
Old 11-27-2016
Interesting effect when applied to Don Cragun's text example:
Code:
awk -vW=30 -vL="Happy New Year" 'BEGIN{for(i=k=1;i>=1;i+=k) {printf("%*.*s\n",(W/2)+i,i*2-1,L);if(i>=W/2)k=-1}}'
               H
              Hap
             Happy
            Happy N
           Happy New
          Happy New Y
         Happy New Yea
         Happy New Year
          Happy New Year
           Happy New Year
            Happy New Year
             Happy New Year
              Happy New Year
               Happy New Year
                Happy New Year
               Happy New Year
              Happy New Year
             Happy New Year
            Happy New Year
           Happy New Year
          Happy New Year
         Happy New Year
         Happy New Yea
          Happy New Y
           Happy New
            Happy N
             Happy
              Hap
               H

EDIT: Try this:
Code:
awk -vW=30 '-vL=Happy New Year' 'BEGIN{for(i=k=1;i>=1;i+=k) {while(length(L)<W)L=L" "L;printf("%*.*s\n",(W/2)+i,i*2-1,L);if(i>=W/2)k=-1}}'

These 2 Users Gave Thanks to RudiC For This Post:
 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Diamond operator in Until Statement (perl)

Hello: I have the following perl script which is giving me trouble inside the second elsif statement. The purpose of the script is to go through a file and print out only those lines which contain pertinent information. The tricky part came when I realized that certain items actually spanned... (5 Replies)
Discussion started by: erichpowell
5 Replies

2. Shell Programming and Scripting

Fun with awk

uggc://ra.jvxvcrqvn.bet/jvxv/EBG13 #!/usr/bin/awk -f BEGIN { for (n=0;n<26;n++) { x=sprintf("%c",n+65); y=sprintf("%c",(n+13)%26+65) r=y; r=tolower(y) } } { b = "" for (n=1; x=substr($0,n,1); n++) b = b ((y=r)?y:x) print b } ... (0 Replies)
Discussion started by: colemar
0 Replies

3. Shell Programming and Scripting

More fun with awk

#!/usr/bin/ksh ls -l $@ | awk ' /^-/ { l = 5*log($5) h = sprintf("%7d %-72s",$5,$8) print "\x1B ls command with histogram of file sizes. The histogram scale is logaritmic, to avoid very short bars for smaller files or very long bars for bigger files. Screenshot: (4 Replies)
Discussion started by: colemar
4 Replies

4. Shell Programming and Scripting

Perl Diamond Operator

I know that when using 'while (<FILE>) {}', Perl reads only one line of the file at one time, and store it in '$_'. Can I change some parameters so that 'while (<>) {}' can read more than one lines, like 2 or 5 lines at one time? Thanks for the help! (1 Reply)
Discussion started by: zx1106
1 Replies

5. UNIX for Dummies Questions & Answers

fun and easy awk question

I have a file called mytitles.txt containing a list of book titles I have a second file called abfile.txt containing a list of book titles (in the 3rd field) and it has author info and copyright year info as well.. I want to search mytitles.txt for a match in the 3rd field of abfiles.txt, and... (2 Replies)
Discussion started by: glev2005
2 Replies

6. What is on Your Mind?

Place your bets! - Ryder Cup 2012 (Golf)

Who will win the 2012 Ryder Cup. Europe vs USA There is an open event in the Event Prediction Forum. The event closes on 27th Sep 2012. 2012 Ryder Cup - Wikipedia, the free encyclopedia (0 Replies)
Discussion started by: ni2
0 Replies

7. Shell Programming and Scripting

To print diamond asterisk pattern based on inputs

I have to print the number of stars that increases on each line from the minimum number until it reaches the maximum number, and then decreases until it goes back to the minimum number. After printing out the lines of stars, it should also print the total number of stars printed. I have tried... (13 Replies)
Discussion started by: rohit_shinez
13 Replies
HAPPY(1)						      Happy Parser Generator							  HAPPY(1)

NAME
happy - the parser generator for Haskell SYNOPSIS
happy [OPTION]... file [OPTION]... DESCRIPTION
This manual page documents briefly the happy command. This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page. Instead, it has documentation in various other formats, including DVI, Info and HTML; see below. Happy is a parser generator system for Haskell. `HAPPY' is a dyslexic acronym for `A Yacc-like Haskell Parser generator'. There are two types of grammar files, file.y and file.ly, with the latter observing the reverse comment bird track convention (i.e. each code line must begin with `>'). The examples distributed with Happy are all of the .ly form. Caveat: When using hbc (Chalmers Haskell) the command argument structure is slightly different. This is because the hbc run time system takes some flags as its own (for setting things like the heap size, etc). This problem can be circumvented by adding a single dash (`-') to your command line. So when using a hbc generated version of Happy, the argument structure is: happy - [OPTION]... file [OPTION]... OPTIONS
The programs follow the usual GNU command line syntax, with long options starting with two dashes (`--'). A summary of options is included below. For a complete description, see the other documentation. -h, --help Show summary of options. -v, --version Print version information on standard output then exit successfully. -a, --array Instructs Happy to generate a parser using an array-based shift reduce parser. When used in conjunction with -g, the arrays will be encoded as strings, resulting in faster parsers. Without -g, standard Haskell arrays will be used. -g, --ghc Instructs Happy to generate a parser that uses GHC-specific extensions to obtain faster code. -c, --coerce Use GHC's unsafeCoerce# extension to generate smaller faster parsers. One drawback is that some type safety is lost, which means that a parser generated with -c may compile fine but crash at run-time. Be sure to compile your grammar without -c first to ensure it is type-correct. This option has quite a significant effect on the performance of the resulting parser, but remember that parsers generated this way can only be compiled by GHC 3.02 and above. This option may only be used in conjuction with -g. -d, --debug Generate a parser that will print debugging information to stderr at run-time, including all the shifts, reductions, state transi- tions and token inputs performed by the parser. This option may only be used in conjuction with -a. -i [FILE], --info[=FILE] Directs Happy to produce an info file containing detailed information about the grammar, parser states, parser actions, and con- flicts. Info files are vital during the debugging of grammars. The filename argument is optional, and if omitted the info file will be written to FILE.info (where FILE is the input file name with any extension removed). -o FILE, --outfile=FILE Specifies the destination of the generated parser module. If omitted, the parser will be placed in FILE.hs, where FILE is the name of the input file with any extension removed. If FILE is - the generated parser is sent to the standard output. -m NAME, --magic-name=NAME Happy prefixes all the symbols it uses internally with either happy or Happy. To use a different string, for example if the use of happy is conflicting with one of your own functions, specify the prefix using the -m option. -t DIR, --template=DIR Instructs Happy to use this directory when looking for template files: these files contain the static code that Happy includes in every generated parser. You shouldn't need to use this option if Happy is properly configured for your computer. -l, --glr Instructs Happy to output a GLR parser instead of an LALR(1) parser. -k, --decode Causes the GLR parser to generate code for decoding the parse forest to a list of semantic results (requires --ghc). -f, --filter Causes the GLR parser to filter out nodes which aren't required for the semantic results (an experimental optimisation, requires --ghc). FILES
/usr/share/happy-1.18.9 SEE ALSO
/usr/share/doc/happy, the Happy homepage (http://haskell.org/happy/) <http://haskell.org/happy/> COPYRIGHT
Happy Version 1.18.9 Copyright (c) 1993-1996 Andy Gill, Simon Marlow; (c) 1997-2001 Simon Marlow AUTHOR
This manual page was written by Michael Weber <michaelw@debian.org>, for the Debian GNU/Linux system (but may be used by others). Glasgow FP Suite 2000-12-23 HAPPY(1)
All times are GMT -4. The time now is 05:54 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy