Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Skrevet

Jeg ble ikke sur, men jeg kan ikke forklare alt.

det er nå likevel en stor forskjell på å forkler hva som skjer i programmet og det å forkler hele syntaksen som språket bruker 

( jeg er red  for at du gjorde det siste , da blir det slitsomt )

Videoannonse
Annonse
Skrevet

Jepp, jeg hopper over alle tall som ikke skal skrives. Og gjør det på en veldig prosedyreorientert måte som er passende for oversetting til delphi.

Apropos prosedyrelignende løsning.

 

<?php

$input1 = "0,2,4,5,6,7,8,9,10,15,16,17,18,19,20,25,26,30";
$input2 = "0,3,4,5,6,7,8,9,10, 15,16,17,18,19,20";

function groupBySeq(array $input) {
  $data = $input;
  $result = [];

  // Group each item together with previeous. Result => [[0,0], [0,2], ..]
  array_unshift($data, 0);
  $gwprev = [];
  for($i=1, $l = count($data); $i < $l; $i++) {
    $gwprev[] = [$data[$i-1], $data[$i]];
  }

  // Group each sequences. Result => [[0],[2,3,4, ..]]
  $tmp = [];
  foreach($gwprev as $value) {
    // Slice group before this.
    if (($value[0]+1) < $value[1]) {
      $result[] = $tmp;
      $tmp = [];
    }
    $tmp[] = $value[1];
  }
  // Add the remaining from $tmp.
  if (!!count($tmp)) {
    $result[] = $tmp;
  }

  return $result;
}

function messWithStrings($input) {
  $result = [];
  $data = preg_split('/\D+/', $input);
  $grouped = groupBySeq($data);
  foreach($grouped as $g) {
    if (count($g) > 1) {
      $result[] = sprintf('%s..%s', reset($g), end($g));
    } else {
      $result[] = $g[0];
    }
  }
  return join(',', $result);
}

var_dump(messWithStrings($input1)); // string(26) "0,2,4..10,15..20,25..26,30"
var_dump(messWithStrings($input2)); // string(14) "0,3..10,15..20"
Skrevet (endret)

Vel, nå har jeg gjort løsningen to ganger med samme framgangsmåte. Finne en måte å gruppere tallrekken etter sekvens. [1,2,3,10,11,12] => [[1,2,3], [10,11,12]]. Resten er bare detaljer. Såvidt jeg klarer å lese så ser det ut til at snippsnapp gjør det samme. Jeg er usikker på syntaksten med python, men dog. Lync ser ut til å gjøre noe lignende? Har virkelig ingen anelse om haskell, men det ser ut som ett lignende mønster om jeg kniper igjen øynene, snurrer stolen to ganger, og myser en stund på koden. Det ser ut som at Emancipate lager en annen datastruktur, bare tar vare på ende-numrene i hver sekvens.

Det stemmer. Jeg traverserer listen og lagrer tupler med ranges. foldr tar seg av selve traverseringen, så jeg trenger bare spesifisere hva som skal gjøres per element. [1,2,3,5,10,11,12] => [(1,3), (5,5), (10,12)]. mkstr er kun print - du får resultatet fra mkgroup alene.

 

Det er rimelig enkelt å oversette det til å bruke mer spesialiserte ikke-tuple-typer i stedet, men det har liten hensikt for dette eksempelet.

Endret av Lycantrophe
  • 2 måneder senere...
Skrevet

Noen her som har drevet på med prosessering av naturlig språk på norsk her? er det veldig forskjellig i fra engelsk? Vet at det er ganske vanlig å bruke regex for å dele filtre ut ord/pre prosessere tekster for at den skal være enklere å jobbe med i sammenheng med machine learning.

 

Men norskt språk er jo ganske forskjellig fra engelsk, samskriving, formatering av desimaltall, datoer. Noen som vet om det finnes noen regex motorer for norsk naturlig språk?

Skrevet

Q: If Dog is a friend of Boy and Boy is a friend of House, is Dog a friend of House?

A: No, friendship is not associative.

 

Hva har "associative" med saken å gjøre? Jeg klarer ikke å se noen sammenheng der.

Skrevet

Det har ingenting med assosiativitet å gjøre, de mener transitivitet.

 

 

Uvennskap er vel transitivt på et vis - din fiendes fiende er din venn osv ...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...