Sponsored Content
Operating Systems OS X (Apple) A Fun Perfect Square Checker Using Integer Arithmetic Only... ;o) Post 302952764 by Corona688 on Friday 21st of August 2015 12:07:04 PM
Old 08-21-2015
Binary search was a good idea. Needed to watch a few edge cases.

Code:
#!/bin/bash

VAL=${1-100}
MN=1
MX="$((VAL))"
[ "$MX" -ge 3037000499 ] && MX=3037000499 # Square root of highest possible perfect square

function die() {
        local CODE=$1 ; shift
        echo "$@" >&2 ; exit $CODE
}

[ "$VAL" -lt 0 ] && die 1 "Negative numbers not allowed"

while (((MX-MN) > 1 ))
do
        if (( (((MN+MX)/2) * ((MN+MX)/2)) > VAL )) ; then
                MX=$(( (MN+MX) / 2 ))
        elif (( (((MN+MX)/2) * ((MN+MX)/2)) < VAL )) ; then
                MN=$(( (MN+MX) / 2 ))
        else
                break;
        fi
done

(( (((MN+MX)/2) * ((MN+MX)/2)) == VAL )) &&
        die 0 "Square root of $VAL is $(( (MN+MX)/2 ))"

die 1 "$VAL is not a perfect square"

Code:
$ time ./psquare.sh $(( 300000 * 300000 ))
MN=299968, MX=300032
Square root of 90000000000 is 300000

real    0m0.004s
user    0m0.003s
sys     0m0.000s
$


Last edited by Corona688; 08-21-2015 at 01:29 PM..
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

extraction of perfect text from file.

Hi All, I have a file of the following format. <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user... (5 Replies)
Discussion started by: nua7
5 Replies

2. UNIX for Dummies Questions & Answers

A perfect number shell program

Here's my work of testing whether a number input is perfect or not.. echo Enter a number read no i=1 ans=0 while do if then ans='expr $ans + $i' fi i='expr $i + 1' done if then echo $no is perfect else echo $no is NOT perfect fi (12 Replies)
Discussion started by: Cyansnow
12 Replies

3. AIX

I want the perfect user-interface

I've got an aix-box somewhere on the network and a PC on my desk. Nothing fancy so far. The PC is made dual-boot: - windowsXP with putty & winSCP or - slackware 13 with xfce4 installed. The aix-box runs DB2 v8.2 and I've installed db2top to monitor the database. db2top is a character... (0 Replies)
Discussion started by: dr_te_z
0 Replies

4. Shell Programming and Scripting

Delete text between square brackets and also delete those square brackets using sed or awk

Hi All, I have a text file which looks like this: computer programming systems engineering I want to get rid of these square brackets and also the text that is inside these brackets. So that my final text file looks like this: computer programming systems engineering I am using... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

5. Shell Programming and Scripting

how to compare string integer with an integer?

hi, how to I do this? i="4.000" if ; then echo "smaller" fi how do I convert the "4.000" to 4? Thanks! (4 Replies)
Discussion started by: h0ujun
4 Replies

6. UNIX for Dummies Questions & Answers

Can you perfect my sed ?

I want to print only the lines that meet the criteria : "worde:" and "wordo;" I got this far: sed -n '/\(*\)\1e:\1o;/p;' But it doesn't quite work. Can someone please perfect it and tell me exactly how its a fixed version/what was wrong with mine? Thanks heaps, (1 Reply)
Discussion started by: maximus73
1 Replies

7. Shell Programming and Scripting

egrep line with perfect mach

Hi Input File A L006 AL01 0 (OCK) L006 A006 0 (OCK) L011 AR11 1 (NLOCK) Input File B L006 AL01 0 (OCK) L006 A006 0 (OCK) Need Egrep Command for perfect Match Thanks (4 Replies)
Discussion started by: asavaliya
4 Replies

8. Shell Programming and Scripting

Not able to find the perfect code...Geting confused in between

I have to find last delimiter in each line of a file and store the value after the last '/' in a variable in ksh script...Pls Pls help me:(The file is as shown below: /opt/apps/cobqa/apps/abadv/bind/advc0007.bnd /opt/apps/cobqa/apps/abbrio/bind/naac6115.bnd... (5 Replies)
Discussion started by: bhavanabahety
5 Replies
MAKEINFO(1)							   User Commands						       MAKEINFO(1)

NAME
makeinfo - translate Texinfo documents SYNOPSIS
makeinfo [OPTION]... TEXINFO-FILE... DESCRIPTION
Translate Texinfo source documentation to various other formats, by default Info files suitable for reading online with Emacs or standalone GNU Info. General options: --error-limit=NUM quit after NUM errors (default 100). --force preserve output even if errors. --help display this help and exit. --no-validate suppress node cross-reference validation. --no-warn suppress warnings (but not errors). --reference-limit=NUM warn about at most NUM references (default 1000). -v, --verbose explain what is being done. --version display version information and exit. Output format selection (default is to produce Info): --docbook output Docbook XML rather than Info. --html output HTML rather than Info. --xml output Texinfo XML rather than Info. --plaintext output plain text rather than Info. General output options: -E, --macro-expand FILE output macro-expanded source to FILE. ignoring any @setfilename. --no-headers suppress node separators, Node: lines, and menus from Info output (thus producing plain text) or from HTML (thus producing shorter output); also, write to standard output by default. --no-split suppress splitting of Info or HTML output, generate only one output file. --no-version-header suppress header with makeinfo version and source path. --number-sections output chapter and sectioning numbers. -o, --output=FILE output to FILE (directory if split HTML), Options for Info and plain text: --enable-encoding output accented and special characters in Info output based on @documentencoding. --fill-column=NUM break Info lines at NUM characters (default 72). --footnote-style=STYLE output footnotes in Info according to STYLE: `separate' to put them in their own node; `end' to put them at the end of the node in which they are defined (default). --paragraph-indent=VAL indent Info paragraphs by VAL spaces (default 3). If VAL is `none', do not indent; if VAL is `asis', preserve existing indentation. --split-size=NUM split Info files at size NUM (default 300000). Options for HTML: --css-include=FILE include FILE in HTML <style> output; read stdin if FILE is -. Options for XML and Docbook: --output-indent=VAL indent XML elements by VAL spaces (default 2). If VAL is 0, ignorable whitespace is dropped. Input file options: --commands-in-node-names allow @ commands in node names. -D VAR define the variable VAR, as with @set. -I DIR append DIR to the @include search path. -P DIR prepend DIR to the @include search path. -U VAR undefine the variable VAR, as with @clear. Conditional processing in input: --ifdocbook process @ifdocbook and @docbook even if not generating Docbook. --ifhtml process @ifhtml and @html even if not generating HTML. --ifinfo process @ifinfo even if not generating Info. --ifplaintext process @ifplaintext even if not generating plain text. --iftex process @iftex and @tex; implies --no-split. --ifxml process @ifxml and @xml. --no-ifdocbook do not process @ifdocbook and @docbook text. --no-ifhtml do not process @ifhtml and @html text. --no-ifinfo do not process @ifinfo text. --no-ifplaintext do not process @ifplaintext text. --no-iftex do not process @iftex and @tex text. --no-ifxml do not process @ifxml and @xml text. Also, for the --no-ifFORMAT options, do process @ifnotFORMAT text. The defaults for the @if... conditionals depend on the output format: if generating HTML, --ifhtml is on and the others are off; if generating Info, --ifinfo is on and the others are off; if generating plain text, --ifplaintext is on and the others are off; if generating XML, --ifxml is on and the others are off. EXAMPLES
makeinfo foo.texi write Info to foo's @setfilename makeinfo --html foo.texi write HTML to @setfilename makeinfo --xml foo.texi write Texinfo XML to @setfilename makeinfo --docbook foo.texi write DocBook XML to @setfilename makeinfo --no-headers foo.texi write plain text to standard output makeinfo --html --no-headers foo.texi write html without node lines, menus makeinfo --number-sections foo.texi write Info with numbered sections makeinfo --no-split foo.texi write one Info file however big REPORTING BUGS
Email bug reports to bug-texinfo@gnu.org, general questions and discussion to help-texinfo@gnu.org. Texinfo home page: http://www.gnu.org/software/texinfo/ COPYRIGHT
Copyright (C) 2004 Free Software Foundation, Inc. There is NO warranty. You may redistribute this software under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. SEE ALSO
The full documentation for makeinfo is maintained as a Texinfo manual. If the info and makeinfo programs are properly installed at your site, the command info makeinfo should give you access to the complete manual. makeinfo 4.8 December 2004 MAKEINFO(1)
All times are GMT -4. The time now is 09:20 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy