Addig lépkedek és tárolom a maximum értéket (legyen "max"), ameddig a lépkedés felfelé tart (vagyis egyre nő az idő köz). Amint lefelé irányba érkezek, akkor addig megyek, míg az idők max értéken belül vannak és a linkeket is csak eddig printelem. Ha max értéknél nagyobbra futnék, akkor onnétól már nem veszem be a többit.
Egyetlen kikötés, hogy egy megadott minimum érték alatti értékeket minimumnak veszek. Hogy az ingadozást egy szint alatt tartsam. Ez nálam 1 nap lesz.
Ez azért kell így nekem meg azért lesz jó, mivel azt akarom elérni, hogy automatikusan leválasszam a túl régen látogatottakat. Viszont persze a "régen" megnevezés itt nem egyértelmű és pontosan ezt kellett feljebb definiálnom.
Példa ruby kód, ahol a minimum érték 1, és 10 darab 1-10-es véletlen értékű listát vizsgálok (a lista már az idő közöket mutatja):
#!/usr/bin/env ruby
list = Array.new(10).map{(rand 10) + 1}
min = 1
max = 0
direction = 1
flag = 1
list.each { |x|
y = x
y = min if y < min
if direction
if y >= max
max = y
else
direction = nil
end
else
if y > max and flag
puts "---"
flag = nil
end
end
puts "o" * x
}
Példa kimenet (3 fajta):
oooo
oooooooo
ooooooooo
ooooooooo
ooooooooo
ooooo
ooo
---
oooooooooo
oooooo
oooo
ooooooo
o
ooooo
oooo
---
oooooooooo
oooooo
oooooooooo
ooooo
o
ooooooooo
ooooo
oooooooo
o
oooooooo
oooooo
oooooo
---
oooooooooo
ooooo
ooooooo
oooooo
Még vizsgálom több szempont szerint, hogy ténylegesen meg fog-e felelni nekem.
Kiegészítés: nem akarom tárolni a linkekre klikkelések számát és mindenképpen kizárólag a látogatottsági idő alapján akarok dönteni. A vonalak mutatják, hogy honnét értékelem réginek az elemeket.
- log69 blogja
- A hozzászóláshoz be kell jelentkezni
- 1301 megtekintés
Hozzászólások
Tipp: ne hasznalj tobbsoros curly brace altal hatarolt blokkokat, mert az csunyanak szamit a Rubys vilagban. Helyette ajanlom a do / end parost, amely ugyanugy hasznalhato, mint a curly brace, csak "szebb" multiline kornyezetben.
A masik: ha valami flag, akkor erdemes a [true, false] ertekkeszletbol erteket adni neki. Attol, mert az 1 az true a nil meg false-kent ertekelodik az ifben, attol meg nem szep a hasznalatuk. Pont erre valo a boolean tipus
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Értelmetlen egyéni preferenciáról beszélni. A szabadság a lényeg. Nem követek konvenciókat, kizárólag azt csinálom, ami nekem legegyszerűbb, legjobban áttekinthető és olvasható.
- A hozzászóláshoz be kell jelentkezni
Ne nagyon dolgozz csapatban a későbbiekben se.
- A hozzászóláshoz be kell jelentkezni
Se most, se később nincs szándékomban. Nem zavar hogy ki mit hogyan szokott, főleg nem pár soros script erejéig. Számomra a legfőbb a szabadság, még azon az áron is, hogy más nem tudja olvasni a kódomat. Nem mintha szerintem olvashatatlan kódot gyártanék. A true / false-ot meg rühellem ;)
- A hozzászóláshoz be kell jelentkezni
Nem tudok elmenni szo nelkul a mellett a teny mellett, hogy a Ruby elegge konvencionalis nyelv, nagyon sokmindenben epit a konvenciokovetesre. Talan rosszul valasztottal.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
?
- A hozzászóláshoz be kell jelentkezni
Akkor már ketten vagyunk. :)
(más kérdés, hogy a feladványod nem teljesen világos számomra, de ez lehet attól is, hogy pár éve kissé le vagyok lassulva :) )
- A hozzászóláshoz be kell jelentkezni
(Egyszerűbben fogalmazva a működést, az első hegyen megyek át, és addig ok míg az elsőnél nagyobb hegyhez nem érek.)
Megvizsgáltam és jónak tűnik. Olyan esetben is, hogy régen nem volt klikk a linkre, és így az újat előre hozza nagyon időben, a többi pedig "távol" marad. Mert ilyenkor az első hegy nagy lesz, és nem dobódik ki a többi, tehát "stabil"-nak fogható fel a működés. Az nem lett volna jó, ha össze vissza ugrál a lista.
- A hozzászóláshoz be kell jelentkezni
class Array
def gnomesort!
i, j = 1, 2
while i < length
if self[i-1] <= self[i]
i, j = j, j+1
else
self[i-1], self[i] = self[i], self[i-1]
i -= 1
if i == 0
i, j = j, j+1
end
end
end
self
end
end
ary = [7,6,5,9,8,4,3,1,2,0]
ary.gnomesort!
:D :D :D :D
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
Ez rendezés? Hozzányúl a sorrendhez?
Nekem az kell, hogy egy már eleve sorba rendezett tömbnél megmondjam, hogy hol vágom le a tömböt.
- A hozzászóláshoz be kell jelentkezni
Igen, rendezés. Valahogy úgy értelmeztem, hogy a feladathoz leginkább ez passzol, de valószínű, túlságosan felületesen olvastam el. ;)
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
Nem baj :)
Arról van szó, hogy egy weboldalon egy részen össze akarom gyűjteni a leggyakrabban látogatott részek linkjeit. Ezen részeknek csak a legutolsó látogatás dátumát tárolom. A valaha megtett klikkek számát direkt nem.
Feladat, hogy ezt a listát automatikusan röviden tartsuk és mondjuk meg, hogy a létező N darab linkből csak mennyit jelenítsünk meg (idő szerint rendezve vannak).
A túl régieket ne jelenítsük meg, mert rontja az átláthatóságot a túl sok link. A túl kevés is. Mi számítson túl réginek?
Illetve ne ugráljon "folyamatosan" ez a halmaz.
- A hozzászóláshoz be kell jelentkezni