Inteligencia Artificial em Bash

1. Inteligencia Artificial em Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/09/2011 - 19:17h

Bom, este é para quando eu tiver tempo, mas já deixo a parte pensada aqui, se alguém quiser ajudar, legal, mas só a fins de curiosidade e aprendizado, NADA MAIS, ok?


#!/bin/bash
# -------------------------------------------------------------.
# Autor: Vinycius Maia - Mrk3004 |
# Versão: -.- | Revisão -.-.- |
# Útima modificação: --/--/-- |
# -------------------------------------------------------------|
# Info: Sistema inteligente capaz de aprender e memorizar |
# através de variáveis simples de controle e banco de dados. |
# -------------------------------------------------------------|
# Objetivos: Criar um ser eletrônico capaz de aprender e |
# interpretar intenções e ideias através de dicionários. |
# Os dicionários não existirão de primeira, eles terão que ser |
# aprendidos dinamicamente através de conversas com este ser |
# eletrônico. As palavras também terão que ser ensinadas a ele |
# para que possa conversar, do contrário ele não entenderá o |
# que você diz. Pense nesse ser como um bebe, ele acabou de |
# nascer e você é o pai que ensinará a ele como fazer tudo. |
# -------------------------------------------------------------|
# Os arquivos do banco de dados e dicionários funcionarão como |
# se fosse um cérebro, ou seja, tendo esses dois arquivos, é |
# possível transportar a 'inteligencia' do ser para qualquer |
# lugar, mesmo separado do script. Apagar os arquivos é como |
# resetar o cérebro dele, o que não é nada legal rsrs |
# -------------------------------------------------------------|
# O bom funcionamento da inteligencia interna do script fica |
# por conta do método de ensino repassado ao ser. É preciso |
# criar algumas rotinas de personalidade, para que se torne |
# algo mais realístico. A interpretação e comparação de |
# informações envolverá a personalidade inicial + o que foi |
# aprendido com o passar do tempo. |
# -------------------------------------------------------------|
# Roadmap: <ainda não definido> |
# -------------------------------------------------------------'



  


2. Re: Inteligencia Artificial em Bash

Leandro Nkz
leandro

(usa Arch Linux)

Enviado em 28/09/2011 - 19:31h

Tá querendo criar um HAL?



3. Re: Inteligencia Artificial em Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/09/2011 - 19:51h

leandro escreveu:

Tá querendo criar um HAL?


huauhaha beeeemmmm menos complexo, mas a ideia é por ai mesmo.


4. Robo Shell Script - apelido EdBash

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 29/09/2011 - 00:47h

mrk3004 escreveu:

leandro escreveu:

Tá querendo criar um HAL?


huauhaha beeeemmmm menos complexo, mas a ideia é por ai mesmo.


Acheiiiiiiiiiiii amado mestre :)

http://www.ed.conpet.gov.br/br/converse.php

Você pergunta e alguém do outro lado vai respondendo. Não sei se ele aprende ou se vive com o banco de dados já digitado.

Acho que serve para ilustrar a ideia. Desafio 4. Pendências só acumulando rrs.


Pergunta: O que é linux
Resposta: Robô Ed: Linus Torvalds, criador do Linux, colocou sua descoberta à disposição de todos, sem cobrar nada. E, além do mais, permitiu a entrada de outros programadores que pudessem aprimorar o sistema operacional.



Você: O que é Shell Script
Robô Ed: Até que seria legal ter um script na mão. Eu teria respostas pra tudo.


kkkkkkkkkkkkk


5. Re: Inteligencia Artificial em Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/09/2011 - 03:38h

@AprendiNoLinux Esse Robo Ed eu conheço de tempos, é bem legalzinho mesmo, mas ele não é inteligente, ele apenas repete frases prontas já pré gravadas. Eu quero ir além, eu quero fazer um script onde ele seja capaz de pegar as palavras, organizá-las de maneira coerente e formar frases com elas, tudo isso sozinho, de acordo com uma analise do que o usuário digitou. Mais ou menos assim:

você digita: oi, tudo bom?

Ele pesquisa em banco de dados específicos as palavras, individualmente. Depois procura sujeitos, verbos, preposições ou qualquer outra coisa que estiver na frase e pesquisa novamente em um dicionário o significado de tal. De acordo com o significado ele coleta palavras que seriam possíveis respostas a interação feita, organiza a sintaxe e printa na tela :D

(daqui uns 10 anos eu consigo fazer isso kkkk)

----------------------------------------------------------------------------


Bom, o esboço já ta feito, mas já percebi que quando a coisa for ficando mais funcional, ninguém vai conseguir usar sem ler algumas centenas de páginas de manual kkk Já da até pra fazer ele aprender algumas palavras, mas eu quero fazer parecer que ele realmente pensa, que realmente possuí algum tipo de inteligencia. Não tinha pensado na complexidade que é manipular informações tão vagas assim. O script vai ter que realmente aprender o português, e estou da falando da parte gramatical! Foi a única forma que encontrei para conseguir fazer ele diferenciar as palavras e entender quando uma frase tem nexo e quando não tem.

Isso vai demorar... MUITO MESMO!

Bom, deixo ai o que fiz na madrugada (sem sono rs), só o esboço mesmo, falta praticamente tudo rs enquanto isso vou fuçar uns livros infantis aqui pra relembrar como é que se aprende português XD


#!/bin/bash
# -------------------------------------------------------------.
# Autor: Vinycius Maia - Mrk3004 |
# Versão: 0.1 | Revisão -.-.- |
# Útima modificação: --/--/-- |
# -------------------------------------------------------------|
# Info: Sistema inteligente capaz de aprender e memorizar |
# através de variáveis simples de controle e banco de dados. |
# -------------------------------------------------------------|
# Objetivos: Criar um ser eletrônico capaz de aprender e |
# interpretar intenções e ideias através de dicionários. |
# Os dicionários não existirão de primeira, eles terão que ser |
# aprendidos dinamicamente através de conversas com este ser |
# eletrônico. As palavras também terão que ser ensinadas a ele |
# para que possa conversar, do contrário ele não entenderá o |
# que você diz. Pense nesse ser como um bebe, ele acabou de |
# nascer e você é o pai que ensinará a ele como fazer tudo. |
# -------------------------------------------------------------|
# Os arquivos do banco de dados e dicionários funcionarão como |
# se fosse um cérebro, ou seja, tendo esses dois arquivos, é |
# possível transportar a 'inteligencia' do ser para qualquer |
# lugar, mesmo separado do script. Apagar os arquivos é como |
# resetar o cérebro dele, o que não é nada legal rsrs |
# -------------------------------------------------------------|
# O bom funcionamento da inteligencia interna do script fica |
# por conta do método de ensino repassado ao ser. É preciso |
# criar algumas rotinas de personalidade, para que se torne |
# algo mais realístico. A interpretação e comparação de |
# informações envolverá a personalidade inicial + o que foi |
# aprendido com o passar do tempo. |
# -------------------------------------------------------------|
# Roadmap: <ainda não definido> |
# -------------------------------------------------------------'

dicionario="dicionario.dc"

function man() {
0=0
}

function main() {
if [ ! -e $dicionario ]; then
(echo "[geral]"
echo "WELCOME=6e68617777203a440a"
echo "FEAR_n1=4f2e4f0a"
echo "FEAR_n2=443a0a"
echo "FEAR_n3=484f4f4f4f4141414141410a"
echo "TAG_FAIL=5c6e203f3f3f5c6e0a"
echo "TAG_USR=3f3f3f3f404941203e0a"
echo "TAG_CON=3f403f203e0a"
echo "TAG_REP=7375646f4049413a7e3e0a"
echo "[/geral]")>> $dicionario
fi

checkdbs $dicionario geral WELCOME
checkdbs $dicionario geral FEAR_n1
checkdbs $dicionario geral FEAR_n2
checkdbs $dicionario geral FEAR_n3
checkdbs $dicionario geral TAG_FAIL
checkdbs $dicionario geral TAG_USR
checkdbs $dicionario geral TAG_CON
checkdbs $dicionario geral TAG_REP

WELCOME="$(criptd `_findinfo $dicionario geral WELCOME` 1)"
FEAR_n1="$(criptd `_findinfo $dicionario geral FEAR_n1` 1)"
FEAR_n2="$(criptd `_findinfo $dicionario geral FEAR_n2` 1)"
FEAR_n3="$(criptd `_findinfo $dicionario geral FEAR_n3` 1)"

TAG_FAIL="$(criptd `_findinfo $dicionario geral TAG_FAIL` 1)"
TAG_USR="$(criptd `_findinfo $dicionario geral TAG_USR` 1)"
TAG_CON="$(criptd `_findinfo $dicionario geral TAG_CON` 1)"
TAG_REP="$(criptd `_findinfo $dicionario geral TAG_REP` 1)"

#_colors background blue
#_colors foreground white
#_typewriter "`bigbang`" 0 0 0
#sleep 4
#_colors lol
_colors purge; clear
_typewriter " `data semana`, `data dia` de `data mes`" 1 2 0

ia_term 1
}

function checkdbs() { # (string, string, string)
# func_info:
# $1 = arquivo
# $2 = sessão
# $3 = tag
if [ ! `_findinfo $1 $2 $3` ]; then
printf "\n Tilt! (cod: iaedb01)\n\n"; exit; fi
}

function ia_term() { # (bool)
# func_info:
# $1 = primeira execução?
date_welcome="\n `data semana`, `data dia` de `data mes`\n\n"
first=$1; while true; do
if [ $first == 0 ]; then clear
printf "$date_welcome"
printf "$TAG_USR "
read info

if [ "$info" == "conversar" ]; then
ia_conversar
fi

if [ "$info" == "ensinar" ]; then
ia_ensinar
fi

if [ "$info" == "consertar" ]; then
ia_repair
fi

if [ "$info" == "revisar" ]; then
0=0
fi

if [ "$info" == "sair" ]; then
exit
fi
printf "$TAG_FAIL"
fi
first=0; sleep 1; done
}

function ia_repair() {
_typewriter "$FEAR_n1" 0 1 date
printf "$TAG_REP "
read advanced
}

function ia_conversar() {
_typewriter "$WELCOME" 0 1 date
printf "$TAG_CON "
read frase
}

function ia_ensinar() {
while true; do
_typewriter "$WELCOME" 0 1 date
printf "$TAG_CON "
read palavra
test="${palavra%%=*}"
result="${palavra##*=}"
if [ "$test" == "$result" ]; then
_typewriter "????" 0 1 date
sleep 2
else
_writeinfo $dicionario geral $test $test $result
break
fi
done
}

function _search_dicio() {
0=0
}

function _search_db() {
0=0
}

function _cutString() {
0=0
}

function _separateString() {
0=0
}

function _findinfo() { # (string, string, string)
# func_info:
# $1 = arquivo
# $2 = sessão
# $3 = tag
session_open=0

while read linha; do
if [ $linha == "[$2]" ]; then session_open=1; fi
if [ $linha == "[/$2]" ]; then break; fi
if [ $session_open == 1 ]; then
if [ ${linha%%=*} == $3 ]; then
printf ${linha##*=}; break
fi
fi
done < $1
}

function _writeinfo() { # (string, string, string, string, string)
# func_info:
# $1 = arquivo
# $2 = sessão
# $3 = tag
# $4 = test
# $5 = result
session_open=0
echo > /tmp/writeinfo.ia

i=0; while read linha; do
if [ $linha == "[$2]" ]; then session_open=1; fi

if [ $linha == "[/$2]" ]; then
printf "$linha" >> /tmp/writeinfo.ia
break
fi

if [ $session_open == 1 ]; then
if [ ${linha%%=*} == $3 ]; then
printf "$4=`criptd $5 0`" >> /tmp/writeinfo.ia
else
printf "$linha" >> /tmp/writeinfo.ia
fi
else
printf "$linha" >> /tmp/writeinfo.ia
fi
((i++)); done < $1
}

function criptd() { # (n,1)
if [ $2 == 0 ]; then echo $1|xxd -p; fi
if [ $2 == 1 ]; then echo $1|xxd -r -p; fi
}

function data() { # (string)
# func_info:
# $1 = (semana, dia , mes, ano)
if [ $1 == semana ]; then date +%A; fi
if [ $1 == dia ] ; then date +%d; fi
if [ $1 == mes ] ; then date +%B; fi
if [ $1 == ano ] ; then date +%Y; fi
}

function bigbang() { # ()
printf $'
Eu tinha que manter a calma, para que ninguém suspeitasse...
Olhei para baixo quando cheguei lá em cima, mas nada se via...
Era uma morte certa...

Algo me puxava para lá, eu não podia pensar muito neste momento,
pois só me impediria de agir em meu proveito próprio.

Eu sempre pus a felicidade dos outros a frente da minha, mas
aquele deveria ser o fim...

Eu procurei por telhas soltas em cima do quarto de eskinovoka,
pé ante pé, se equilibrando com cuidado para não fazer barulho.

Aquele era o momento!

Em meio os gritos senti uma pressão em meu peito e ainda acordado
pude o ouvir os estalos que meus ossos faziam ao se chocarem
contra o chão.
'
}

function _typewriter() { # (string, int)
# func_info:
# $1 = frase a escrever
# $2 = quebra de linha extra (before)
# $3 = quebra de linha extra (after)
clear
if [ $4 == date ]; then printf "$date_welcome"; fi
if [ $2 == 1 ]; then printf "\n"; fi
if [ $2 == 2 ]; then printf "\n\n"; fi
for (( c=0; c < $[`printf "$1"|wc -m`]; c++ )); do
printf "${1:$c:1}"; sleep .06
done
if [ $3 == 1 ]; then printf "\n"; fi
if [ $3 == 2 ]; then printf "\n\n"; fi
}

function _colors() { # (string, string, string)
# func_info:
# $1 = modo (background, foreground, purge, lol)
# $2 = cor (red, blue, yellow, black, green, white)
# $3 = efeitos <ainda não implementado>
if [ $1 == foreground ]; then
if [ $2 == red ] ; then printf "\e[31;1m"; fi
if [ $2 == blue ] ; then printf "\e[34;1m"; fi
if [ $2 == yellow ]; then printf "\e[33;1m"; fi
if [ $2 == black ] ; then printf "\e[30;1m"; fi
if [ $2 == green ] ; then printf "\e[32;1m"; fi
if [ $2 == white ] ; then printf "\e[37;1m"; fi
fi

if [ $1 == background ]; then
if [ $2 == red ] ; then printf "\e[41;1m"; fi
if [ $2 == blue ] ; then printf "\e[44;1m"; fi
if [ $2 == yellow ]; then printf "\e[43;1m"; fi
if [ $2 == black ] ; then printf "\e[40;1m"; fi
if [ $2 == green ] ; then printf "\e[42;1m"; fi
if [ $2 == white ] ; then printf "\e[47;1m"; fi
fi

if [ $1 == purge ]; then printf "\e[m"; fi

if [ $1 == lol ]; then
for (( i=0; i < 5; i++ )); do
printf "\e[41;1m"; clear; sleep .1
printf "\e[44;1m"; clear; sleep .1
printf "\e[43;1m"; clear; sleep .1
printf "\e[40;1m"; clear; sleep .1
printf "\e[42;1m"; clear; sleep .1
printf "\e[47;1m"; clear; sleep .1
done
fi
}

main; exit



6. Re: Inteligencia Artificial em Bash

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 29/09/2011 - 06:51h

Já vi isso em algum lugar ;)


7. Re: Inteligencia Artificial em Bash

Luis Vitorio
vitorioluis

(usa Debian)

Enviado em 29/09/2011 - 09:34h

caramba não sabia que o shell script chegava esse nivel...


8. Re: Inteligencia Artificial em Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/09/2011 - 13:16h

AprendiNoLinux escreveu:

Já vi isso em algum lugar ;)


Do que exatamente está falando? Não entendi rs




9. Re: Inteligencia Artificial em Bash

Luis Vitorio
vitorioluis

(usa Debian)

Enviado em 29/09/2011 - 13:40h

a nivel de inteligencia artificial;....


10. Re: Inteligencia Artificial em Bash

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/09/2011 - 04:21h

Fala galera, O bichano está evoluindo :D

Gravei um vídeo para que vocês entendam como funciona. Estou sem mic, mas para bom entendedor está ótimo.



Segue o code "pequenino"

Ps.: Se quiserem fazer testes com palavras, tomem cuidado, pois há alguns bugs na função de gravar o dicionário, as vezes acaba inserindo as tags de forma incorreta. Vou ajeitar isso logo logo.


#!/bin/bash
# -------------------------------------------------------------.
# Autor: Vinycius Maia - Mrk3004 |
# Versão: 0.2 | Revisão 9.2.25 |
# Útima modificação: 30/09/11 |
# -------------------------------------------------------------|
# Info: Sistema inteligente capaz de aprender e memorizar |
# através de variáveis simples de controle e banco de dados. |
# -------------------------------------------------------------|
# Objetivos: Criar um ser eletrônico capaz de aprender e |
# interpretar intenções e ideias através de dicionários. |
# Os dicionários não existirão de primeira, eles terão que ser |
# aprendidos dinamicamente através de conversas com este ser |
# eletrônico. As palavras também terão que ser ensinadas a ele |
# para que possa conversar, do contrário ele não entenderá o |
# que você diz. Pense nesse ser como um bebe, ele acabou de |
# nascer e você é o pai que ensinará a ele como fazer tudo. |
# -------------------------------------------------------------|
# Os arquivos do banco de dados e dicionários funcionarão como |
# se fosse um cérebro, ou seja, tendo esses dois arquivos, é |
# possível transportar a 'inteligencia' do ser para qualquer |
# lugar, mesmo separado do script. Apagar os arquivos é como |
# resetar o cérebro dele, o que não é nada legal rsrs |
# -------------------------------------------------------------|
# O bom funcionamento da inteligencia interna do script fica |
# por conta do método de ensino repassado ao ser. É preciso |
# criar algumas rotinas de personalidade, para que se torne |
# algo mais realístico. A interpretação e comparação de |
# informações envolverá a personalidade inicial + o que foi |
# aprendido com o passar do tempo. |
# -------------------------------------------------------------|
# ::: |
# -------------------------------------------------------------'

dicionario="dicionario.dc"
TMP_writeinfo="/tmp/writeinfo.ia"

function main() { # ()
# - FUNC - | --- DC --- | SC | -- TAG -- | -- ERRO --.
_checkdbs $dicionario geral WELCOME iaecg01 #
_checkdbs $dicionario geral ENSINAR iaecg02 #
_checkdbs $dicionario geral CONVERSAR iaecg03 #
_checkdbs $dicionario geral REPAIR iaecg04 #
#
_checkdbs $dicionario geral FEAR_n1 iaesdb01 #
_checkdbs $dicionario geral FEAR_n2 iaesdb02 #
_checkdbs $dicionario geral FEAR_n3 iaesdb03 #
#
_checkdbs $dicionario geral TAG_FAIL iaetg01 #
_checkdbs $dicionario geral TAG_USR iaetg02 #
_checkdbs $dicionario geral TAG_CON iaetg03 #
_checkdbs $dicionario geral TAG_REP iaetg04 #

# - VAR - | CRIPTD | SEARCH | --- DC ---| SC | - TAG - |- MOD -.
WELCOME="$(criptd `_findInfo $dicionario geral WELCOME 1` 1)" #
ENSINAR="$(criptd `_findInfo $dicionario geral ENSINAR 1` 1)" #
CONVERSAR="$(criptd `_findInfo $dicionario geral CONVERSAR 1` 1)" #
REPAIR="$(criptd `_findInfo $dicionario geral REPAIR 1` 1)" #
#
FEAR_n1="$(criptd `_findInfo $dicionario geral FEAR_n1 1` 1)" #
FEAR_n2="$(criptd `_findInfo $dicionario geral FEAR_n2 1` 1)" #
FEAR_n3="$(criptd `_findInfo $dicionario geral FEAR_n3 1` 1)" #
#
TAG_FAIL="$(criptd `_findInfo $dicionario geral TAG_FAIL 1` 1)" #
TAG_USR="$(criptd `_findInfo $dicionario geral TAG_USR 1` 1)" #
TAG_CON="$(criptd `_findInfo $dicionario geral TAG_CON 1` 1)" #
TAG_REP="$(criptd `_findInfo $dicionario geral TAG_REP 1` 1)" #

_typewriter " `data semana`, `data dia` de `data mes`" 1 2 0

_ia_term 1
}

function man() { # ()
0=0
}

function _checkdbs() { # (string, string, string)
# func_info:
# $1 = arquivo | $3 = tag
# $2 = sessão | $4 = erro
_findInfo $1 $2 $3 0
if [ $valid == 0 ]; then
clear; printf "\n "; printf "Tilt! (cod: $4)\n";
printf "Caso não saiba o que fazer, consulte o manual\n\n"
printf " sudo mode? [s/N]: "
read opc
if [ $opc == s ]; then ia_repair; fi
if [ $opc == S ]; then ia_repair; fi
exit
fi
}

function _dc_create() {
(echo "[geral]
WELCOME=6e68617777203a440a
ENSINAR=686577777777203a290a
CONVERSAR=686d6d6d6d0a
REPAIR=3f0a
FEAR_n1=4f2e4f0a
FEAR_n2=443a0a
FEAR_n3=484f4f4f4f4141414141410a
TAG_FAIL=3f3f3f3f0a
TAG_USR=3f3f3f3f404941203e0a
TAG_CON=3f403f203e0a
TAG_REP=7375646f4049413a7e3e0a
[/geral]")>> $dicionario
}

function _ia_term() { # (bool)
# func_info:
# $1 = primeira execução?
date_welcome="\n `data semana`, `data dia` de `data mes`\n\n"

pfail=1; first=$1; while true; do
if [ $first == 0 ]; then
_var_update WELCOME $dicionario geral WELCOME 1
_typewriter "$WELCOME" 0 1 date
_var_update TAG_USR $dicionario geral TAG_USR 1
printf "$TAG_USR "
read info
# ------ Verificação --------|---- Comando ---- | - Close -#
if [ "$info" == "|conversar" ]; then ia_conversar; fi #
if [ "$info" == "|ensinar" ] ; then ia_ensinar ; fi #
if [ "$info" == "|sudo" ] ; then ia_repair ; fi #
if [ "$info" == "|revisar" ] ; then ia_revisar ; fi #
if [ "$info" == "|sair" ] ; then exit ; fi #
if [ $pfail == 1 ]; then
_var_update TAG_FAIL $dicionario geral TAG_FAIL 1
_typewriter "$TAG_FAIL" 0 1 date; sleep 2
fi
fi
first=0; done
}

function _var_update() { # (string,string,string,string,int)
# func_info:
# $1 = variável | $3 = sessão | $5 = modo
# $2 = arquivo | $4 = tag |
rs="$(criptd `_findInfo $2 $3 $4 1` $5)"
eval $1='"'$rs'"'
}

function ia_repair() { # ()
while true; do
_var_update FEAR_n1 $dicionario geral FEAR_n1 1
_typewriter "$FEAR_n1" 0 1 date
_var_update TAG_REP $dicionario geral TAG_REP 1
printf "$TAG_REP "
read advanced

if [ $advanced == "|testsintax" ]; then
0=0
fi

if [ $advanced == "|resetdb" ]; then
0=0
fi

if [ $advanced == "|resetdc" ]; then
rm $dicionario >/dev/null 2>&1
_dc_create; printf "\n OK!\n\n"
sleep 2; _typewriter "Reiniciando..." 1 2 0
sleep 3; main
fi

if [ $advanced == "|import" ]; then
0=0
fi

if [ $advanced == "|export" ]; then
0=0
fi

if [ $advanced == "|sair" ]; then exit; fi

_var_update TAG_FAIL $dicionario geral TAG_FAIL 1
_typewriter "$TAG_FAIL" 0 1 date
sleep 2
done
}

function ia_conversar() { # ()
pfail=0; while true; do
_var_update WELCOME $dicionario geral WELCOME 1
_typewriter "$WELCOME" 0 1 date
_var_update TAG_CON $dicionario geral TAG_CON 1
printf "$TAG_CON "
read frase
frase_=$(echo $frase|sed "s/ /,/g")
set -- "$frase_"; IFS=$','; declare -a pl=($*)
for (( i=0; $i < ${#pl[@]}; i++ )); do
if [ `_findInfo $dicionario palavras ${pl[$i]} 1` ]; then
printf "$(criptd `_findInfo $dicionario palavras ${pl[$i]} 1` 1)"
sleep 4; pfail=1
fi
done
unset IFS
if [ $pfail == 0 ]; then
_var_update TAG_FAIL $dicionario geral TAG_FAIL 1
_typewriter "$TAG_FAIL" 0 1 date; sleep 2
fi
pfail=0; done
}

function ia_ensinar() { # ()
while true; do
_var_update WELCOME $dicionario geral WELCOME 1
_typewriter "$WELCOME" 0 1 date
_var_update TAG_CON $dicionario geral TAG_CON 1
printf "$TAG_CON "
read palavra
test="${palavra%%=*}"
result="${palavra##*=}"
if [ "$test" == "$result" ]; then
_var_update TAG_FAIL $dicionario geral TAG_FAIL 1
_typewriter "$TAG_FAIL" 0 1 date; sleep 2
else
if [ "$test" == "PALAVRAS" ]; then
set -- "$result"; IFS=$','
declare -a palavras=($*)
for (( i=0; $i < ${#palavras[@]}; i++ )); do
_findInfo $dicionario palavras ${palavras[$i]} 0
if [ $valid == 1 ]; then
printf "palavra existe no dicionário\n"
valid=0; sleep 2
else
printf "${palavras[$i]}?\n"; sleep 2
_findSession $dicionario palavras 1
if [ $valid == 0 ]; then
printf "[palavras]\n" >> $dicionario
printf "${palavras[$i]}=????\n" >> $dicionario
fi
if [ $valid == 1 ]; then
printf "${palavras[$i]}=????\n" >> $dicionario
#valid=0
fi
fi
done
unset IFS
_findSession $dicionario palavras 0
if [ $valid == 0 ]; then
printf "[/palavras]\n" >> $dicionario
fi
valid=0; pfail=0; break
fi

if [ "$test" == "DEFINIÇÃO" ]; then
_findInfo $dicionario palavras $result 0
if [ $valid == 1 ]; then
printf "\n Definição de $result: \
$(criptd `_findInfo $dicionario palavras $result 1` 1)\n"
valid=0; sleep 3
printf "\n Alterar definição? [S/n]: "
read opc
if [ $opc == s ]; then
printf "Digite a definição de $result: "
read df
_writeinfo $dicionario palavras $result "$df"
fi
if [ $opc == S ]; then
printf "Digite a definição de $result: "
read df
_writeinfo $dicionario palavras $result "$df"
fi
else
printf "$test?\n$result?\n"; sleep 2
fi
valid=0; pfail=0; break
fi

_writeinfo $dicionario geral $test "${result}"
pfail=0; break
fi
done
}

function _findInfo() {
# func_info:
# $1 = arquivo | $3 = tag
# $2 = sessão | $4 = modo
session_open=0
valid=0
while read linha; do
if [ $linha == "[$2]" ]; then session_open=1; fi
if [ $linha == "[/$2]" ]; then break; fi
if [ $session_open == 1 ]; then
if [ ${linha%%=*} == $3 ]; then
if [ $4 == 1 ]; then printf "${linha##*=}"; fi
valid=1; break
fi
fi
done < $1
}

function _findSession() {
# func_info:
# $1 = arquivo | $3 = modo
# $2 = sessão |
valid=0
while read linha; do
if [ $3 == 1 ]; then
if [ $linha == "[$2]" ]; then valid=1; break; fi
else
if [ $linha == "[/$2]" ]; then valid=1; break; fi
fi
done < $1
}

function _search_db() {
0=0
}

function _cutString() {
0=0
}

function _separateString() {
0=0
}

function _writeinfo() { # (string, string, string, string, string)
# func_info:
# $1 = arquivo | $3 = tag
# $2 = sessão | $4 = result
session_open=0
valid=0
echo > $TMP_writeinfo

i=0; while read linha; do
if [ $linha == "[$2]" ]; then session_open=1; fi

if [ $linha == "[/$2]" ]; then
printf "$linha\n" >> $TMP_writeinfo
break
fi

if [ $session_open == 1 ]; then
if [ ${linha%%=*} == $3 ]; then
printf "$3=`criptd "${4}" 0`\n" >> $TMP_writeinfo
else
printf "$linha\n" >> $TMP_writeinfo
fi
else
printf "$linha\n" >> $TMP_writeinfo
fi
((i++)); done < $1
sed '/^$/d' $TMP_writeinfo > "${TMP_writeinfo}1"
if [ ! `diff -q "${TMP_writeinfo}1" "$TMP_writeinfo" 2>&1 > /dev/null`]
then valid=1; more "${TMP_writeinfo}1" > $dicionario; fi
}

function criptd() { # (n,1)
if [ $2 -eq 0 ]; then echo "${1}"|xxd -p ; fi
if [ $2 -eq 1 ]; then echo "${1}"|xxd -r -p; fi
}

function data() { # (string)
# func_info:
# $1 = (semana, dia , mes, ano)
if [ $1 == semana ]; then date +%A; fi
if [ $1 == dia ] ; then date +%d; fi
if [ $1 == mes ] ; then date +%B; fi
if [ $1 == ano ] ; then date +%Y; fi
}

function bigbang() { # ()
printf $'
Eu tinha que manter a calma, para que ninguem suspeitasse...
Olhei para baixo quando cheguei lá em cima, mas nada se via...
Era uma morte certa...

Algo me puxava para lá, eu não podia pensar muito neste momento,
pois só me impediria de agir em meu proveito próprio.

Eu sempre pus a felicidade dos outros a frente da minha, mas
aquele deveria ser o fim...

Eu procurei por telhas soltas em cima do quarto de eskinovoka,
pé ante pé, se equilibrando com cuidado para não fazer barulho.

Aquele era o momento!

Em meio os gritos senti uma pressão em meu peito e ainda acordado
pude o ouvir os estalos que meus ossos faziam ao se chocarem
contra o chão.
'
}

function _typewriter() { # (string, int)
# func_info:
# $1 = frase a escrever
# $2 = quebra de linha extra (before)
# $3 = quebra de linha extra (after)
clear
if [ $4 == date ]; then printf "$date_welcome"; fi
if [ $2 == 1 ]; then printf "\n"; fi
if [ $2 == 2 ]; then printf "\n\n"; fi
for (( c=0; c < $[`printf "$1"|wc -m`]; c++ )); do
printf "${1:$c:1}"; sleep .06
done
if [ $3 == 1 ]; then printf "\n"; fi
if [ $3 == 2 ]; then printf "\n\n"; fi
}

function _colors() { # (string, string, string)
# func_info:
# $1 = modo (background, foreground, purge, lol)
# $2 = cor (red, blue, yellow, black, green, white)
# $3 = efeitos <ainda não implementado>
if [ $1 == foreground ]; then
if [ $2 == red ] ; then printf "\e[31;1m"; fi
if [ $2 == blue ] ; then printf "\e[34;1m"; fi
if [ $2 == yellow ]; then printf "\e[33;1m"; fi
if [ $2 == black ] ; then printf "\e[30;1m"; fi
if [ $2 == green ] ; then printf "\e[32;1m"; fi
if [ $2 == white ] ; then printf "\e[37;1m"; fi
fi

if [ $1 == background ]; then
if [ $2 == red ] ; then printf "\e[41;1m"; fi
if [ $2 == blue ] ; then printf "\e[44;1m"; fi
if [ $2 == yellow ]; then printf "\e[43;1m"; fi
if [ $2 == black ] ; then printf "\e[40;1m"; fi
if [ $2 == green ] ; then printf "\e[42;1m"; fi
if [ $2 == white ] ; then printf "\e[47;1m"; fi
fi

if [ $1 == purge ]; then printf "\e[m"; fi

if [ $1 == lol ]; then
for (( i=0; i < 5; i++ )); do
printf "\e[41;1m"; clear; sleep .1
printf "\e[44;1m"; clear; sleep .1
printf "\e[43;1m"; clear; sleep .1
printf "\e[40;1m"; clear; sleep .1
printf "\e[42;1m"; clear; sleep .1
printf "\e[47;1m"; clear; sleep .1
done
fi
}
main; exit

##########################################







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts