Ad Block 1
avatar
Zgadywanie stringow

Guest 71 15th May, 2019

                                           
                         #!/usr/bin/env bash
range='A-Za-z'
random=false
stats=false
for flag in $@	
do
if [[ "$flag" =~ ^- ]]; then
	case $flag in
  	-h )
	    	echo 'Skrypt przyjmuje jako pierwszy argument string i generuje string identyczny z nim.'
		echo 'Przelaczniki:'
		echo '-h: Pomoc'
		echo '-r: Strategia losowa generowania(przyrostowa jest rozwiazaniem domyslnym).'
		echo '-l: String zawiera tylko male litery.'
		echo '-s: Poza wynikowym stringiem skrypt podaje liczbe prob.'
		exit
	;;
	-r )
		random=true
	;;
	-l )
		uppercases=$(echo $1 | tr -dc [A-Z] | wc -c)
		if [ $uppercases != 0 ] ; then
			echo "Nieprawidlowe dane wejsciowe. $uppercases wielkich liter."
			exit
		fi
		range='a-z'
	;;
	-s )
		stats=true
	;;
	esac;
fi
done
strlen=$(($(echo $1|wc -c)-1))
guess=$(head /dev/urandom | tr -dc $range | head -c $strlen)
tries=0
if $random ; then		
	while [ $guess != $1 ] ;
	do
		guess=$(head /dev/urandom | tr -dc $range | head -c $strlen)		
		tries=$(($tries+1))
	done
	if $stats ; then
		echo "Result found in: $tries tries"
	fi
	echo "Result is: $guess"
else
	while [ $guess != $1 ] ;
	do
		b=''
		i=0
		while [ $i != $strlen ]
		do	

			i=$(($i+1))					
			guesspart=$(echo $guess | head -c $i | tail -c 1)
			argpart=$(echo $1 | head -c $i | tail -c 1)
			if [ $guesspart = $argpart ]; then
				miniguess=$guesspart
			else
				miniguess=$(head /dev/urandom | tr -dc $range | head -c 1)
						
			fi
			b="$b$miniguess"
		done
		guess=$b
		tries=$(($tries+1))
	done
	if $stats ; then
		echo "Result found in: $tries tries"
	fi
	echo "Result is: $guess"
fi
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Ad Block 2

Comments

Authentication required

You must log in to post a comment.

Log in
    There are no comments yet.