Avatar billede kodak Mester
30. oktober 2022 - 20:24 Der er 13 kommentarer

Flyt hvis dublicat

Jeg har 5 "Inputs" strings
og 9 "output"

$In_1        $Out_1
                  $Out_2
$In_2        $Out_3
                  $Out_4
$In_3        $Out_5
                  $Out_6
$In_4        $Out_7
                  $Out_8
$In_5        $Out_9


Jeg kan ikke helt se hvordan jeg skal bære mig ad.
hvis $In_1 og $In_2 er ens, skal output være: $Out_2 = $In_1
er de forskellige, skal de være: $Out_1 = $In_1 og $Out_3 = $In_2
hvis $In_2 og $In_3 er ens, skal output være: $Out_4 = $In_2

hvis $In_1 , $In_2 og $In_3 er ens, skal output være: $Out_3 = $In_1

og sådan skal den gøre helevejen igennem.
der skal ses på alle indgange hvis flere side om side er ens, skal den outputte på den i midten af dem.

Jeg kan lave den med én men ikke se hvordan det gøres med flere.
Avatar billede arne_v Ekspert
30. oktober 2022 - 20:40 #1
Det re meget uklart hvordan logikken er.

Kan du skrive en unit test til problemet?
Avatar billede kodak Mester
30. oktober 2022 - 21:44 #2
if($In_2 = $In_1){
    $Out_1 = '';
    $Out_2 = $In_1;
    $Out_3 = '';
} else {
    $Out_1 = $In_1;
    $Out_2 = '';
    $Out_3 = $In_2;
}

Denne klare den første del (trot jeg)
men kan ikke se mig ud af hvordan og hvorledes.

Men jeg har 6 eksempler her.
Input er nederste rækker med 5 felter
Output er Øverste rækker med 9 felter
https://postimg.cc/147gt4XC
Avatar billede arne_v Ekspert
31. oktober 2022 - 00:38 #3
Baseret på det link så måske:


<?php

function mid($a) {
    $temp = array();
    for($i = 0; $i < 2 * count($a) - 1; $i++) $temp[] = '';
    $i = 0;
    while($i < count($a)) {
        $n = 0;
        while($i + $n < count($a) && $a[$i + $n] == $a[$i]) $n++;
        $temp[2*$i + $n - 1] = $a[$i];
        $i += $n;
    }
    return $temp;
}

function dump($a) {
    echo implode(' ', array_map(function ($e) { return $e != '' ? $e : "-"; }, $a)) . "\r\n";
}

dump(mid(array('Ole', 'Per', 'Per', 'Lis', 'Ole')));
dump(mid(array('Ole', 'Ole', 'Ole', 'Lis', 'Lis')));
dump(mid(array('Ole', 'Per', 'Lars', 'Lis', 'Ole')));
dump(mid(array('Ole', 'Lis', 'Ole', 'Lis', 'Lis')));
dump(mid(array('Ole', 'Ole', 'Ole', 'Ole', 'Ole')));
dump(mid(array('Ole', 'Ole', 'Per', 'Lis', 'Lis')));
?>
Avatar billede kodak Mester
31. oktober 2022 - 21:10 #4
det ser ikke ud som om den outputter korrekt, antallet af output ser lidt forkert ud, men det kan være jeg tager fejl.

<input type="text" value="$Out_1"/>
<input type="text" value="$Out_2"/>
<input type="text" value="$Out_3"/>
<input type="text" value="$Out_4"/>
<input type="text" value="$Out_5"/>
<input type="text" value="$Out_6"/>
<input type="text" value="$Out_7"/>
<input type="text" value="$Out_8"/>
<input type="text" value="$Out_9"/>
Avatar billede arne_v Ekspert
31. oktober 2022 - 21:25 #5
Har du taget hensyn til at jeg har lavet både input og output som arrays?
Avatar billede kodak Mester
01. november 2022 - 23:11 #6
Ja det har jeg.
det er bare ud fra dit eksempel så er der ikke 8 bindestreger i hver .

Men som sagt ser lige nærmere på det.
Avatar billede kodak Mester
06. november 2022 - 17:04 #7
Jeg kan ikke få den til at lave en foreach()

Der kommer ikke noget output.
Avatar billede arne_v Ekspert
06. november 2022 - 20:14 #8
Du bliver nødt til at vise lidt kode.
Avatar billede kodak Mester
06. november 2022 - 21:52 #9
$layout_text = mid(array($field_1, $field_2, $field_3, $field_4, $field_5));
 
  foreach($layout_text as $item) {

  echo '<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">';
    echo $item;
    echo '</text>';
}
Avatar billede arne_v Ekspert
07. november 2022 - 02:33 #10
<?

function mid($a) {
    $temp = array();
    for($i = 0; $i < 2 * count($a) - 1; $i++) $temp[] = '';
    $i = 0;
    while($i < count($a)) {
        $n = 0;
        while($i + $n < count($a) && $a[$i + $n] == $a[$i]) $n++;
        $temp[2*$i + $n - 1] = $a[$i];
        $i += $n;
    }
    return $temp;
}

$field_1 = 'Ole';
$field_2 = 'Per';
$field_3 = 'Per';
$field_4 = 'Lis';
$field_5 = 'Ole';

$layout_text = mid(array($field_1, $field_2, $field_3, $field_4, $field_5));

foreach($layout_text as $item) {
   
    echo '<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">' . "\r\n";
    echo $item . "\r\n";
    echo '</text>' . "\r\n";
}

?>


skriver:

<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">
Ole
</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">

</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">

</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">
Per
</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">

</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">

</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">
Lis
</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">

</text>
<text x="41.5798" y="6.4721" id="Felt_x0020_1" class="fil1 fnt0">
Ole
</text>
Avatar billede kodak Mester
07. november 2022 - 19:29 #11
det var min fejl det skulle ikke være en echo.

men hvis jeg laver en:
$field_1 = 'Ole';
$field_2 = 'Ole';
$field_3 = 'Per';
$field_4 = 'Per';
$field_5 = 'Lis';

så undlader den det færste blanke felt, der ved rykker den det hele et tak tilbage.
Den bør vise sig:
<text x="41.5798" y="6.4721" id="Pos_x0020_1" class="fil1 fnt0"></text>
<text x="77.0677" y="6.4721" id="Pos_x0020_2" class="fil1 fnt0">Ole</text>
<text x="112.2269" y="6.4721" id="Pos_x0020_3" class="fil1 fnt0"></text>
<text x="147.606" y="6.4721" id="Pos_x0020_4" class="fil1 fnt0"></text>
<text x="182.9882" y="6.4721" id="Pos_x0020_5" class="fil1 fnt0"></text>
<text x="218.4001" y="6.4721" id="Pos_x0020_6" class="fil1 fnt0">Per</text>
<text x="253.7823" y="6.4721" id="Pos_x0020_7" class="fil1 fnt0"></text>
<text x="289.1942" y="6.4721" id="Pos_x0020_8" class="fil1 fnt0"></text>
<text x="324.5764" y="6.4721" id="Pos_x0020_8" class="fil1 fnt0">Lis</text>

men viser sig:
<text x="41.5798" y="6.4721" id="Pos_x0020_1" class="fil1 fnt0">Ole</text>
<text x="77.0677" y="6.4721" id="Pos_x0020_2" class="fil1 fnt0"></text>
<text x="112.2269" y="6.4721" id="Pos_x0020_3" class="fil1 fnt0"></text>
<text x="147.606" y="6.4721" id="Pos_x0020_4" class="fil1 fnt0"></text>
<text x="182.9882" y="6.4721" id="Pos_x0020_5" class="fil1 fnt0">Per</text>
<text x="218.4001" y="6.4721" id="Pos_x0020_6" class="fil1 fnt0"></text>
<text x="253.7823" y="6.4721" id="Pos_x0020_7" class="fil1 fnt0"></text>
<text x="289.1942" y="6.4721" id="Pos_x0020_8" class="fil1 fnt0">Lis</text>
Avatar billede arne_v Ekspert
07. november 2022 - 20:09 #12
Der er et eller andet mystisk her.

<?php

function mid($a) {
    $temp = array();
    for($i = 0; $i < 2 * count($a) - 1; $i++) $temp[] = '';
    $i = 0;
    while($i < count($a)) {
        $n = 0;
        while($i + $n < count($a) && $a[$i + $n] == $a[$i]) $n++;
        $temp[2*$i + $n - 1] = $a[$i];
        $i += $n;
    }
    return $temp;
}

$field_1 = 'Ole';
$field_2 = 'Ole';
$field_3 = 'Per';
$field_4 = 'Per';
$field_5 = 'Lis';

$layout_text = mid(array($field_1, $field_2, $field_3, $field_4, $field_5));

foreach($layout_text as $item) {
 
    echo '<text>';
    echo $item;
    echo '</text>' . "\r\n";
}

?>


<text></text>
<text>Ole</text>
<text></text>
<text></text>
<text></text>
<text>Per</text>
<text></text>
<text></text>
<text>Lis</text>
Avatar billede kodak Mester
07. november 2022 - 21:52 #13
Der var andre ting der spillede ind igen sorry.
Ny mangler jeg bare at finde den halve længde på et ord/sætning og så få fordelt dem korrekt.

Men takker for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester