Nome na Diagonal

Ola pessoal, me deparei com um ex que pedi o nome da pessoa e exibe ele em diagonal porém n consegui pensar em uma lógica para fazer
Ex:
P
e
d
r
o
Pensei em uma logica de pegar as 4 primeiras posições e colocar cada uma delas em um print porem ficaria limitado a apenas um nome em específico, gostaria q alguém me indicassem uma logica para resolver este ex, obrigado desde ja!

Em Python eu não saberia fazer, mas, é fácil quando você pegar uma palavra tipo José e quer colocar seu nome na diagonal a lógica seria pega cada posição e roda uma interação posicionando mais um espaço em cada uma delas e pulando depois um item em cada linha.

PHP por exemplo uma solução rápida:

<?php

$name = "Jose de Alencar";

$count = mb_strlen($name, 'UTF-8');

$space = '';

for($i = 0; $i < $count; $i++)
{
	echo $space . $name[$i] . PHP_EOL;
	$space .= ' ';
}
1 curtida

humm n entendi muita coisa do código mas peguei a ideia, vou tenta fazer com o for, se conseguir te aviso, Obrigado !!!

Tanto php quanto python herdaram de C um “printf” e no console funciona muito bem:

Em php:

<?php
$name = 'Jose de Alencar';
$count = mb_strlen($name, 'UTF-8');
$i = 0;
while ($i < $count) {
    printf("%*s\n", $i, $name[$i]);
}

Em python:

name = 'Jose de Alencar'
count = len(name)
i = 0
while i < count:
    print("%*s" % (i, name[i]))

Só não tenho certeza se no php funciona o %*s… mas a intenção é definir que o espaço na frente do caractere será dinamico, dessa forma Jose seria:

J
 o
  s
   e

Obs: python não precisa de \n na string de formatação, pois por padrão já esse char, se quiser mudar é só dizer o end no print ex:

print("texto sem quebra de linha", end=' ')

Espero ter ajudado

1 curtida

Não funciona …

Bom saber, obrigado pela confirmação, nesse caso uma “gambis” ajuda legal…

printf("%{$i}s\n", $name[$i]);

Esse código também é falho !!!, bom é o que eu testo.

Falho em que sentido? Estamos falando de console ok?

Rodando em terminal linux esse exemplo, funcionou tranquilamente…

 $ php -r '$i=10;printf("%{$i}s\n", "Rodrigo");'

Imprimiu um espaçamento com 10 posições na frente do meu nome como esperado…

Obrigado pela explicação pessoal !!!