Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

BlackTDN :: Batch Alarm Clock

Batch Alarm Clock

Às vezes tenho dificuldade em acordar cedo, principalmente as 04:30 da matina, e, por causa disso, experimentei vários sistemas “despertadores” mas nenhum me atendeu. Resolvi montar o meu próprio. Que fosse simples e que me despertasse na hora certa. Minha primeira opção foi fazer usando comandos do Windows (a próxima versão será em PowerShell).

Nesta primeira versão temos 2 opções de “programar o alarme”. A primeira via linha de comando onde informamos a hora para o despertar e, opcionalmente, a música a ser tocada (no exemplo “Negro Drama: Racionais MC´s”); a segunda é executando o “script” e informando a hora em que o “Alarme” deverá “despertar” (neste caso não é possível personalizar a música: sempre tocará a música definida no “script”).

 

Bem, além de mim, ninguém mais é obrigado a acordar ouvido “Negro Drama” então, para alterar a musica “DEFAULT” altere a seguinte atribuição:

alarmClock DEFAULT song

SET tDSong="C:/\temp/\Racionais_MCs_Negro_Drama.mp3"

Eis o código:

@Echo off&setlocal

    color f0
    title Batch Alarm Clock

    SET tDSong="C:/\temp/\Racionais_MCs_Negro_Drama.mp3"
    IF [%1] NEQ [] (
        set tSetA=%1:00,00
        IF [%2] NEQ [] (
            set tPSong=%2
        ) else (
            set tPSong=%tDSong%
        )
        goto :top
    )

    cls
    echo.
    echo.
    echo.
    echo Use the 24 hour clock: example 15:00 for 3:00PM
    echo.
    echo TIME: %time%
    echo.
    set /p tSetG=Set Alarm:
    set tSetA=%tSetG:~0,5%:00,00
    set tPSong=%tDSong%

    goto :top

:top
    goto calcTime
    :sleep
    if "%tTime:~0,5%" == "%tSetA:~0,5%" (
            cls
            echo Date             : %date%
            echo.
            echo Time             : %tTime%
            echo Alarm is set for : %tSetA%
            echo.
            call bigtext ALARM !!!
            start mplay32 /play /close %tPSong%
            REM %tPSong%
            goto :end
    ) else (
            PING -n 2 127.0.0.1 > NUL
            REM TIMEOUT /T 1 /NOBREAK > NUL
    )
    goto :top

:end
endlocal
goto :EOF  

:calcTime

    cls

    set hour=%tSetA:~0,2%
    if "%hour:~1,1%" == ":" set hour=0%hour:~0,1%
    set min=%tSetA:~3,2%
    if "%min:~1,1%" == ":" set min=%tSetA:~2,2%
    set secs=%tSetA:~6,6%
    if "%secs:~1,1%" == "," set secs=%tSetA:~5,6%
    set tSetA=%hour%:%min%:%secs%
    set tMatch=%tSetA%

    set tTime=%time%
    set hour=%tTime:~0,2%
    if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
    set min=%tTime:~3,2%
    if "%min:~0,1%" == " " set min=0%min:~1,1%
    set secs=%tTime:~6,6%
    if "%secs:~0,1%" == " " set secs=0%secs:~1,6%
    set tTime=%hour%:%min%:%secs%
    echo Date             : %date%
    echo.
    echo Time             : %tTime%

    echo Alarm is set for : %tSetA%
    set /A tMatch=(1%tMatch:~0,2%-100)*360000+(1%tMatch:~3,2%-100)*6000+(1%tMatch:~6,2%-100)*100+(1%tMatch:~9,2%-100)
    set /A tnTime=(1%tTime:~0,2%-100)*360000+(1%tTime:~3,2%-100)*6000+(1%tTime:~6,2%-100)*100+(1%tTime:~9,2%-100)

    set t24=24:00:00,00
    set /A tn24=(1%t24:~0,2%-100)*360000+(1%t24:~3,2%-100)*6000+(1%t24:~6,2%-100)*100+(1%t24~9,2%-100)

    if %tMatch% LSS %tnTime% (
        set /a tnTime=%tn24%-%tnTime%
        set /a tElapTime=%tn24%-%tnTime%+%tMatch%
    ) else (
        set /a tElapTime=%tMatch%-%tnTime%
    )

    set /A tElapTimeH=(%tElapTime%/360000)
    set /A tElapTimeM=((%tElapTime%-%tElapTimeH%*360000)/6000)
    set /A tElapTimeS=((%tElapTime%-%tElapTimeH%*360000-%tElapTimeM%*6000)/100)
    set /A tElapTimeHS=(%tElapTime%-%tElapTimeH%*360000-%tElapTimeM%*6000-%tElapTimeS%*100)

    if %tElapTimeH%  LSS 10 set tElapTimeH=0%tElapTimeH%
    if %tElapTimeM%  LSS 10 set tElapTimeM=0%tElapTimeM%
    if %tElapTimeS%  LSS 10 set tElapTimeS=0%tElapTimeS%
    if %tElapTimeHS% LSS 10 set tElapTimeHS=0%tElapTimeHS%

    echo.

    set swElapTile=%tElapTimeH%:%tElapTimeM%:%tElapTimeS%,%tElapTimeHS%

    echo ElapTime         : %swElapTile%

    echo.
    echo %tnTime%
    echo %tMatch%
    echo %tElapTime%
goto :sleep

Se estiver utilizando uma versão do Windows superior ao XP poderá substituir a instrução usada como “sleep”

PING -n 2 127.0.0.1 > NUL

por

TIMEOUT /T 1 /NOBREAK > NUL

Para elaborar o meu despertador peguei emprestado fragmentos de “scripts” obtidos em:

  1. How to Program a Batch File Alarm Clock;
  2. Print time in a batch file (milliseconds) ; e
  3. BigText.cmd - Batch file to echo giant size characters

Os meus arquivos ( alarmClock.bat e bigText.bat ) salvei em windows\system32.

Para programar o alarme (usando a música “DEFAULT”):

alarmClock Set alarmClock Execute alarmClock Match

alarmClock MediaPlayer

Para programar o alarme (informando a música a ser tocada):

alarmClock Set alarmClock Execute alarmClock Match

alarmClock MediaPlayer 

mplay32 poderá não estar disponível em versões mais atuais do Windows, como por exemplo a 7. Neste caso, poderemos substituir:

start mplay32 /play /close %tPSong%

por

%tPSong%

Deixando o SO resolver com qual aplicativo abrirá o arquivo.

Para obter o código clique aqui ou aqui

[]s
иαldσ dj

Comentários

Postagens mais visitadas