ALLAN AVELARTechnology Solutions
🍻Boa Noite,<username class="jsx-3589083454">Visitante</username>!Seja bem vindo ao meu site!Progressive Web App (PWA)Instalar em seu dispositivoChromecast Controlsstatus: not playing or showingVolumeDown50%VolumeUpPlayPausestoppedStopResetFullscreenExpandAcesso RestritoConectar / RegistrarEntre com suas credenciais de acessoEspaço de AcessosSolicite seu Código de AcessoDados CadastraisSeus dados pessoais e de acessoProjetos / ServiçosSeu histórico de contrataçõesProdutos / DownloadsSeu histórico de aquisiçõesChromecast AppsSeus contratos de transmissãoCréditos / ComprasSeu saldo e histórico de créditosEspaço de AcessosSeus acessos à conteúdos restritosNotificaçõesNotificações habilitadas para vocêDesconectarDesconectar seu usuárioConteúdos disponíveisHomeSobre Mim6Resumo PessoalUm pouco de como tudo começouResumo ProfissionalUm pouco da minha tragetóriaMetodologia de TrabalhoComo eu faço acontecerMemórias PessoaisConteúdo RestritoCurriculum VitaeConteúdo RestritoViagens & FotosConteúdo RestritoÁreas de Atuação10Todos os meus serviçosResumo de todas as áreasCTO as a ServiceTenha um C-Level de meio períodoCorporate ArchitectureAgilidade e tecnologia como filosofiaSoftware & TechnologyEm desenvolvimentoFrontend DevelopmentEm desenvolvimentoBackend DevelopmentEm desenvolvimentoStrategy & ConsultingEm desenvolvimentoPlatform & DevSecOpsEm desenvolvimentoCustomer ExperienceEm desenvolvimentoAgile CultureEm desenvolvimentoHub de Inovação6Cultura de InovaçãoVantagens e como implementarDistributed LT & BlockchainEm desenvolvimentoData Science & AnalyticsEm desenvolvimentoCybersecurity PlatformEm desenvolvimentoIntelligent AutomationEm desenvolvimentoAI & Machine LearningEm desenvolvimentoCursos & Treinamentos9Distributed LT & BlockchainEm desenvolvimentoCybersecurity PlatformEm desenvolvimentoIntelligent AutomationEm desenvolvimentoFrontend DevelopmentEm desenvolvimentoBackend DevelopmentEm desenvolvimentoPlatform & DevSecOpsEm desenvolvimentoAI & Machine LearningEm desenvolvimentoProgressive Web AppsEm desenvolvimentoAgile CultureEm desenvolvimentoFale ComigoPROJETOS REALIZADOSTodos os meus projetosResumo de todas as áreasInstituições Financeiras3Banco Santander TottaConteúdo RestritoBanco Santander BrasilConteúdo RestritoBanco Safra S.AConteúdo RestritoWeb3 / Blockchain15Bitcoin (BTC)Conteúdo RestritoEthereum VM (ETH)Conteúdo RestritoRipple (XRP)Conteúdo RestritoHyperledger.orgConteúdo RestritoInternet ComputerConteúdo RestritoStarknet (Cairo)Conteúdo RestritoPolkadot (DOT)Conteúdo RestritoDeFi DashboardsConteúdo RestritoToken MarketplacesConteúdo RestritoCrypto CheckoutsConteúdo RestritoCold / Hot WalletsConteúdo RestritoWallet ConnectorsConteúdo RestritoNon Fungible Tokens (NFT)Conteúdo RestritoDescentralized Identities (DID)Conteúdo RestritoDescentralized Organizations (DAO)Conteúdo RestritoProjetos Antigos29TIM | Unidade de Resposta AudívelAdobe Flex, Actionscript 3, Java, SpringACS | Follow EnergyAngularjs, HTML5, CSS3, C#, REST APIACS | Gateway CE50Angularjs, HTML5, CSS3, C, C#, LUASKY | Selinho de NatalActionscript 3, .NET, REST API, JSONIntel | Futuro de PresenteActionscript 3, .NET, REST API, JSONNestlé | Baú de DiversõesAS 3, .NET, REST, Facebook OpengraphMarlboro | Red RacingAdobe Flash, Actionscript 3, JSONHP | Cartucho PirataAdobe Flash, Actionscript 3, REST APIHP | Youtube StoreAdobe Flash, AS3, YouTube Data APICasas Bahia | BahianinhoActionscript 3, .NET, REST API, JSONAdria | TortinhasAdobe Flash, Actionscript 3, PHPUniverso Online | UOL FinanceActionscript 3, REST API, JSONUniverso Online | UOL MaisActionscript 3, REST API, JSONChevrolet | CaptivaActionscript 3, PHP, MYSQLGafisa | Edifício ColaborativoAdobe Flash, Actionscript 3Pão de Açucar | Sommeliers ClubAdobe Flash, Actionscript 3Pão de Açucar | Desafio ColeçõesAdobe Flash, Actionscript 3Antarctica | Circuito OriginalMacromedia Flash, Actionscript 2, XMLNestlé | Nescau 2.0Macromedia Flash, Actionscript 2, XMLSchin RefrigerantesActionscript 2, FMS 2, PHP, MYSQLMercedes-Benz | SLK 2005Actionscript 2, XMLMercedes-Benz | Classe CActionscript 2, XMLMercedes-Benz | Classe AActionscript 2, XMLMercedes Benz | SprinterActionscript 2, XMLMercedes Benz | Motores EletrônicosActionscript 2, XMLBanda NX ZeroMacromedia Flash, Actionscript 2Lew´lara TBWAActionscript 2, PHP, MYSQLMaison CriolaActionscript 2, PHP, MYSQLBondage MusicActionscript 2, PHP, MYSQLBlog PostsHackerRank5Sock MerchantWarm-Up ChallengesCounting ValleysWarm-Up ChallengesRepeated StringWarm-Up ChallengesJumping On CloudsWarm-Up ChallengesLeft RotationWarm-Up ChallengesLegal TermsTermos e CondiçõesPolítica de PrivacidadeIsenção de Responsabilidade
Usuário / SenhaBlockchainEsqueceu sua senha?EntrarNão tem uma conta? Veja uma demostração!
🚀 Fevereiro 24, 2018 ♻ Outubro 21, 2018reading 8 minutos de leitura

Warm-up Challenges ⚡ Jumping On Clouds

Estou postando sobre as minhas respostas aos desafios do HackerRank como forma de melhorar meu aprendizado, reforçar meu conhecimento e estabelecer uma compreensão dos conceitos abordados. Se eu ajudar alguém compartilhando ao longo do caminho, melhor ainda!

Jumping On Clouds é um dos desafios iniciais com a dificuldade 'EASY'.


Qual o desafio?

Emma está jogando um novo jogo para celular que começa com nuvens numeradas consecutivamente. Algumas das nuvens são thunderheads e outras são cumulus. Ela pode pular em qualquer nuvem cumulus com um número igual ao número de nuvens atuais mais 1 ou 2. Ela deve evitar as nuvens de tempestade. Determine o número mínimo de saltos que levará Emma para pular de sua posição inicial para a última nuvem. É sempre possível ganhar o jogo.

Para cada jogo, Emma receberá uma matriz de nuvens numeradas 0 se elas forem seguras ou 1 se precisarem ser evitadas. Por exemplo, c = [0, 1, 0, 0, 0, 1, 0] indexado de 0...6. O número em cada nuvem é seu índice na lista, então ela teria que evitar as nuvens com índices 1 e 5. Ela poderia seguir os dois caminhos a seguir: 0 -> 2 -> 4 -> 6 ou 0 -> 2 -> 3 - > 4 -> 6 . O primeiro caminho leva 3 saltos enquanto o segundo leva 4.

O que temos que fazer?

Uma função que retorne o número mínimo de saltos requeridos, como um inteiro.

Parâmetros
  • c = uma matriz de inteiros binários

Sample Input

0 0 1 0 0 1 0

Sample Output

4

Solução

function jumpingOnClouds(c) {

	let steps = 0,
			i = 0;
				
	while (i < c.length - 1) {
		if ((i + 2 < c.length) && c[i + 2] == 0) {
			i += 2;
		} else {
			i++;
		}
		steps++;
	}

	return steps;
}

Lógica

let steps = 0,
	i = 0;

Primeiro criei duas variáveis; steps para manter a contagem do número mínimo de saltos requeridos; i para iterar o whileloop;

while

Decidi por um whileloop em vez de um forloop porque, para a primeira instrução if ((i + 2 < c.length) && c[i + 2] == 0), quero incrementar i += 2 e não apenas por 1.

Eu sempre tento saltar duas nuvens. Se não for possível por causa da nuvem de tempestade, salto 1 nuvem. Então faço isso até que o ponteiro esteja finalmente na última nuvem.

Por último, finalizo a função retornando a contagem final. 🖖


🕵Soluções Extras

Outras línguas que eu falo


💎 Ruby

def jumpingOnClouds(c)
	steps = 0
	i = 0

	while (i < c.length - 1) do
		if ((i + 2 < c.length) && c[i + 2] == 0)
			i += 2
		else
			i += 1
		end
		steps += 1
	end
	steps
end

🐍 PYTHON 2 & 3

def jumpingOnClouds(c):
	steps = 0
	i = 0
	
	while (i < len(c) - 1):
		if ((i + 2 < len(c)) and c[i + 2] == 0):
			i += 2
		else:
			i += 1
		end
		steps += 1
	
	return steps

golang GOLANG

func jumpingOnClouds(c []int32) int32 {
	var steps int32
	i := 0
	for {
		if i + 2 < len(c) && c[i + 2] == 0 {
			i += 2
		} else {
			i++
		}
		steps++

		if i <= len(c) - 1 {
			break
		}
	}
	return steps
}

scala SCALA

def jumpingOnClouds(c: Array[Int]): Int = {
	var steps = 0
	var i = 0
					
	while (i < c.length - 1) {
		if ((i + 2 < c.length) && c(i + 2) == 0) {
			i += 2
		} else {
			i += 1
		}
		steps += 1
	}
	return steps

javaJAVA 7 & 8

static int jumpingOnClouds(int[] c) {
	int steps = 0,
			i = 0;
					
	while (i < c.length - 1) {
		if ((i + 2 < c.length) && c[i + 2] == 0) {
			i += 2;
		} else {
			i += 1;
		}
		steps += 1;
	}
	return steps;

php PHP

function jumpingOnClouds($c) {
	$steps = 0;
	$i = 0;

	while ($i < count($c) - 1) {
		if (($i + 2 < count($c)) && $c[$i + 2] == 0) {
			$i += 2;
		} else {
			$i++;
		}
		$steps++;
	}
	return $steps;

Pensamento: Ter fé é assinar uma folha em branco e deixar que Deus nela escreva o que quiser.
Santo Agostinho

💡 Últimos Insights:

Não afirmo que essas respostas são as melhores ou mais eficientes, elas são simplesmente criações da minha mente para resolver o problema naquele momento. Provavelmente hoje eu faria diferente...
Sobre MimResumo ProfissionalMetodologia de TrabalhoMemórias PessoaisCurriculum VitaeFotos & Viagens
ÁREAS DE ATUAÇÃOCTO as a ServiceCorporate ArchitectureSoftware & TechnologyFrontend DevelopmentBackend DevelopmentStrategy & ConsultingPlatform & DevSecOpsCustomer ExperienceAgile Culture
Hub de InovaçãoDistributed LT & BlockchainData Science & AnalyticsCybersecurity PlatformIntelligent AutomationAI & Machine Learning
CURSOS & TREINAMENTOSBlockchain & Distributed LTCybersecurity PlatformIntelligent AutomationFrontend DevelopmentBackend DevelopmentPlatform & DevSecOpsAI & Machine LearningProgressive Web AppsAgile Culture
Hackathons & Prêmios
PROJETOS REALIZADOSWEB3 / BLOCKCHAIN 2017 ~ 2023BitcoinEthereumRippleStarknetDIDInternet ComputerMarketplacesNFTHyperledgerWalletsDAODeFi DashboardsCrypto Checkoutsecurity tokensBANCOS 2016 ~ 2021Santander TottaSafra S.A.Santander BrasilProjetos Antigos 2000 ~ 2016SKYIntelACSNinho SoleilHP YouStoreHP Cartucho PirataMarlboro RacingMercedes BenzTortinhas AdriaChevrolet CaptivaGPA Sommeliers ClubUOL FinanceGafisaSprinterCasas BahiaJVCLew´laraPão de AçucarSchin RefrigerantesNescau 2.0PapaizTV CulturaSpacekidsBondage MusicMaison CriolaAntarctica OriginalNX ZeroSLK 2005Classe AClasse CPetrobrasBraskemNíveaJohnson & JohnsonAbyaraTIM (URA)NestléUOL
Blog PostsHACKERRANK 2017 ~ 2018#sockMerchant#countingValleys#repeatedstring#jumpingOnClouds#leftRotation
Fale Comigo
Isenção de ResponsabilidadePolítica de PrivacidadeTermos e Condições
Este PWA foi construído com ❤ no meu tempo livre 🤸‍♂️ através dos anos...