Sponsored Content
Top Forums Shell Programming and Scripting awk diamond code golf (just for fun!) Post 302986555 by Scrutinizer on Sunday 27th of November 2016 07:22:58 AM
Old 11-27-2016
Thanks pilnet101 Smilie . Basically it increases the line length by 2 every line and memorizes the line. Then at maximum length, the loop starts to decrement, rather than increment and only prints the lines memorized in the increment phase.

With regards to the setting of the quotient q and the line n where the maximum line length occurs, and using the name m for maximum line length rather than l which is easily confused with the number 1), perhaps this is a bit clearer:
Code:
awk -v m=15 -v c=\* 'BEGIN{q=!(m%2);n=int(m/2);for(i=k=1;i>=1;i+=k){s=s c;if(k==1)A[i]=sprintf("% *s%.*s",n,s,i+q-1,s);print A[i];if(i==n)k=-1}}'


Last edited by Scrutinizer; 11-27-2016 at 01:05 PM..
This User Gave Thanks to Scrutinizer 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
FMT(1)							    BSD General Commands Manual 						    FMT(1)

NAME
fmt -- simple text formatter SYNOPSIS
fmt [-Cr] [goal [maximum]] [name ...] fmt [-Cr] [-g goal] [-m maximum] [name ...] DESCRIPTION
fmt is a simple text formatter which reads the concatenation of input files (or standard input if none are given) and produces on standard output a version of its input with lines as close to the goal length as possible without exceeding the maximum. The goal length defaults to 65 and the maximum to 75. The spacing at the beginning of the input lines is preserved in the output, as are blank lines and interword spac- ing. In non raw mode, lines that look like mail headers or begin with a period are not formatted. -C instructs fmt to center the text. -g goal New way to set the goal length. -m maximum New way to set the maximum length. -r Raw mode; formats all lines and does not make exceptions for lines that start with a period or look like mail headers. fmt is meant to format mail messages prior to sending, but may also be useful for other simple tasks. For instance, within visual mode of the ex(1) editor (e.g., vi(1)) the command !}fmt will reformat a paragraph, evening the lines. SEE ALSO
mail(1), nroff(1) HISTORY
The fmt command appeared in 3BSD. BUGS
The program was designed to be simple and fast - for more complex operations, the standard text processors are likely to be more appropriate. BSD
May 29, 2007 BSD
All times are GMT -4. The time now is 12:56 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy