Avatar billede kodak Mester
30. oktober 2022 - 20:24 Der er 14 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 kodak Mester
04. juni 2024 - 15:22 #14
Kan dette også gøres med javascript

Hvis jeg har 5 input.
input1, input2, input3, input4, input5

og 9 output:
output1, output1_5, output2, output2_5, output3, output3_5, output4, output4_5, output5

Jeg har ind til vidre verdien udlæst her:

const output1 = document.getElementById("input1").value;
const output1_5 = document.getElementById("input1_5").value;
const output2 = document.getElementById("input2").value;
const output2_5 = document.getElementById("input2_5").value;
const output3 = document.getElementById("input3").value;
const output3_5 = document.getElementById("input3_5").value;
const output4 = document.getElementById("input4").value;
const output4_5 = document.getElementById("input4_5").value;
const output5 = document.getElementById("input5").value;
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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



IT-JOB