küçük bir sorun için java veya php ipucu

2 Cevap java

Ben garip bir zihin gogling sorun yaşıyorum. Önceden Üzgünüm, seni karıştırmayın varsa.

Ben aşağıdaki verileri var

1 3 5
5 1 2
2 4 8
3 2 9
3 8 4

first column = source 1
second column = source 2
third column = result column

First and second column will can create 3rd column and that 3rd column can be used in 1st or 2nd column to make a new 3rd column value. You can see in first row 5 was 3rd column and in 2nd row it was input to make 2 (3rd column)

I am looking for a solutin that if it pass 3 it return me (1,4,5) rows and same for other digits. Solution tip can be either in java or php because I just want to get data from a old project to make it work !

Teşekkürler!

DÜZENLEME


You all guys are all great ! ! ! Thanks for reading my question and I am extremely sorry for confusion.

Ben bazı eski verileri küme hiyerarşik kümeleme şeyler yapıyorum. Ben bu çıkışı oluşturulan bir java sınıfı kullanılır. sütun1 & column2 kaynağıdır ve column3 sonucudur. Hiyerarşik kümeleme veri merg ve başka yeni bir düğüm oluşturmak ve sadece tek bir kök düğümü dönene kadar bunu yapmaya devam.

Vücudun herhangi bir java veya php iyi bir hiyerarşik küme biliyorsanız bana knkow olsun. Ben bazı paketleri biliyorum ama BIG API'lerini sevmiyorum

2 Cevap

Veri düz metin olduğunu varsayarsak, yapmanız gerekir ilk şey queryable yapmak için veri süreçtir.

Approach

  • Dosyasından veri yükleme
  • Satırlara newline karakteri ile dosya bölme
  • space karakter tarafından sütunlara satırları Yarma

Buradan, aradığınız değerlerin arayışı içinde queryable veri döngü basit bir durumda bulunuyor.

Possible Solution

PHP, nesne yönelimli bir çözüm bu gibi küçük bir şey görünebilir:

class myData {

    var $data;

    function myData($d) {
        $this->data = $d;
    }


    function search($s) {

        $results = array();

        // loop through our pre-loaded data
        foreach($this->data as $key => $dataRow) {

            // if the value we are looking for is in the data array
            if(in_array($s, $dataRow)) {

                // add it to the results, 
                // keeping the associative key (0, 1, 2, 3 ...)
                $results[$key] = $dataRow;

            }

        }

        return $results;
    }


    static function load($f) {

        $contents = file_get_contents($f);

        // split the data by new line
        $dataRows = explode("\r\n", $contents);

        $data = array();


        foreach($dataRows as $key => $dataRow) {

            // split each row by the space character
            $data[$key] = explode(" ", $dataRow);


        }

        return new myData($data);           

    }

}

Usage example

Aşağıdaki gibi veri dosyası {[(0)] olarak adlandırılır} varsayarak, kullanım olup:

$data = myData::load("data.txt");

$results = $data->search("3");

// display our result keys
echo "Found that in " . implode(array_keys($results), ", ") . "\r\n";

// or print the full results
print_r($results);

Results

Yukarıdaki örnek için çıktı:

Found that in 0, 3, 4
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 5
        )

    [3] => Array
        (
            [0] => 3
            [1] => 2
            [2] => 9
        )

    [4] => Array
        (
            [0] => 3
            [1] => 8
            [2] => 4
        )

)

Umarım düzgün sorunuzu anladım, ve bu en azından sonunda aradığınız sonuca ulaşmak yardımcı olur.

It took a few times reading this, but I think I know what you are trying to ask. So if I understand correctly, these examples would work too: if you are returned 2, you would get rows (2, 3, 4) if you are returned 8, you would get rows (3, 5)

Yani bu soruyu cevaplamak için, biz numaralar Burada bulunduğunuz veri yapısının ne tür bilmek gerekir hızlı ve kirli bir örnektir.

// original data sets
$column1 = array(1,5,2,3,3);
$column2 = array(3,1,4,2,8);
$column3 = array(5,2,8,9,4);

$number_passed = 3;
$count = count($column1)-1;

for($i = 0; $i <= $count; $i++)
{
    if($column1[$i] == $number_passed or
       $column2[$i] == $number_passed or
       $column3[$i] == $number_passed){
        $columns[] = $i+1;
    }
}
print_r($columns);

Eğer orijinal yapı olarak daha fazla bilgi sağlarsanız, ben mümkün iyi kod sağlayabilir. Umarım yardımcı olur.

Mutlu Kodlama!