Komentarai Prisijungti
Viršuje: Seniausi | Naujausi
Strong_Bad 2010-01-14 01:07
1 4 2 5 3 8 12 9 11 7 10 6
Lygtai tenkina salyga
nikis 2010-01-14 01:55
ligonis 2010-01-14 02:50
1 4 8 3 7 12 9 5 2 7 11 6 (pusiau mieganciam atrodo teisingai)
Mikis 2010-01-14 09:27
Labai smagiai pateiktas uždavinis buvo smagu skaityti ne kaip kitus straipsnius
nondescript 2010-01-14 10:10
skaiciai negali pasikartot
ligonis 2010-01-14 11:19
vakar tikrinau ir atrode teisingai
miego trukumas padare savo.
Minde317 2010-01-14 12:26
Uzsukau programele, tai nerado atsakymu
nondescript 2010-01-14 13:27
1, 6, 11, 4, 9, 2, 7, 12, 5, 10, 3, 8
o kaip sis variantas? paemiau paprasta seka, skaicius +5
nikis 2010-01-14 13:41
Nu 8 su 1 niekaip nesueina.
Kaip ir 11 su 4, 9 su 2, 12 su 5, 10 su 3.
Pasirodo gan sunkus čia gavosi.
nondescript 2010-01-14 14:18
tarkiml 8 su 1 yra penkti kaimynai
Strong_Bad 2010-01-14 15:43
Aisku, kazkodel man atrode, kad gali buti 2 skirtumas, pasirode kad reik 3 minimum...
Bet jeigu jau programele nerado atsakymu, tai reiskias ir ner, nebent programele su trukumais
Nesigincykit, kad 8 ir 1 tinka, nes 1 = 13, taip nera, nes cia tik skaiciai paimti nuo 1 iki 12 ir niekur kitur nera pamineta 13-24 ar 0. Turim nuo 1 iki 12 ir juos reik deliot.
Reiks dar pazaist padeliot pakol atsibos
nikis 2010-01-14 15:46
Paskaityk dar kartą sąlygą. Kalba eina ne apie kaimynystę ant laikrodžio, ne skirtumą padalose, bet tik apie pačius skaičius.
8 - 1 = 7
Jei tavo uždavinio interpretacija būtų teisinga, tai šis pateikstas pvz:
Pasižiūrėkite, mes spėjome viską pamatyti.
------------------------------3----12
--------------------------10----------9
-------------------------7--------------4
--------------------------2------------1
----------------------------6---------5
-------------------------------11--8
būtų teisingas. O jis paminėtas kaip antras neteisingas bandymas.
"Padėkite surašyti ratuku, kokia norite tvarka, visus skaičius nuo 1 iki 12 taip, kad bet kurie du gretimi skaičiai skirtųsi ne mažiau kaip per 3 ir ne daugiau kaip per 5 (kitais žodžiais, gretimi skaičiai gali skirtis arba per 3, arba per 4, arba per 5)."
Kokį algoritmą/principą panaudojai?
ligonis 2010-01-14 16:00
programelei manau tiktu ciklai. pagrindinei programoi pirmas ciklas, kuris eina nuo 1 iki 12. toliau siuncia masyva kuriam suzymeti skaiciai kurie jau buvo, ir kuris skaicius buvo pries tai. ir vis toi funkcijoi patikrinus jei nera laisvu skaiciu atitinkanciu salyga - keiciam pirmo ciklo skaiciu ir t.t.
nikis 2010-01-14 16:06
Na, jei gerai įsivaizduoju tavo mintį, tai tam reikėtų, tarkim, paimt vieną statinį skaičių(nes vistiek apskritimą gaunam, ir viršūnę bet kokią galim imt), ir tada jei su ciklais, reikėtų kaip ir 11 ciklų. O tai nelabai praktiška. Būtų įdomu pamatyt tos nerandančios programos pagrindinį algoritmą, ar visą kodą.
Minde317 2010-01-14 17:41
Progremeles ideja tokia:
reikia suformuoti masyva is 12 nariu (darom 12 ciklu cikle)
tada tikrinam ar kiekvieno masyvo nariai atitinka salyga (tarp gretimu elementu skirtumas 3,4,5)
Tokia "paleidus" programele mano kompas (Intel Core 2 Duo E8200 2.66Ghz, 4GB) "uzduso", tai teko optimizuot tuos ciklus.
Nera prasmes eit i cikla jei masyvo vienas narys = sekanciam iseiles nariui (1,1,.....)
Taip pat ner prasmet eit i ciklus jei vienas narys didesnis at mazesnis nei 3,4,5 uz sekanti nari (...,5,12...) arba (,2,4,...)
MS Access programele (VBA pagrindu):
Private Sub Command1_Click()
Dim pr, pab
pr = Time
mas2 = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
kiekis = 1
' sukurti mas2
For i0 = 0 To 11
mas2(0) = i0 + 1
For i1 = 0 To 11
If i1 <> i0 Then
mas2(1) = i1 + 1
If Tinkamas(1) = True Then
For i2 = 0 To 11
If i2 <> i0 And i2 <> i1 Then
mas2(2) = i2 + 1
If Tinkamas(2) = True Then
For i3 = 0 To 11
If i3 <> i0 And i3 <> i1 And i3 <> i2 Then
mas2(3) = i3 + 1
If Tinkamas(3) = True Then
For i4 = 0 To 11
If i4 <> i0 And i4 <> i1 And i4 <> i2 And i4 <> i3 Then
mas2(4) = i4 + 1
If Tinkamas(4) = True Then
For i5 = 0 To 11
If i5 <> i0 And i5 <> i1 And i5 <> i2 And i5 <> i3 And i5 <> i4 Then
mas2(5) = i5 + 1
If Tinkamas(5) = True Then
For i6 = 0 To 11
If i6 <> i0 And i6 <> i1 And i6 <> i2 And i6 <> i3 And i6 <> i4 And i6 <> i5 Then
mas2(6) = i6 + 1
If Tinkamas(6) = True Then
For i7 = 0 To 11
If i7 <> i0 And i7 <> i1 And i7 <> i2 And i7 <> i3 And i7 <> i4 And i7 <> i5 And i7 <> i6 Then
mas2(7) = i7 + 1
If Tinkamas(7) = True Then
For i8 = 0 To 11
If i8 <> i0 And i8 <> i1 And i8 <> i2 And i8 <> i3 And i8 <> i4 And i8 <> i5 And i8 <> i6 And i8 <> i7 Then
mas2(8 ) = i8 + 1
If Tinkamas(8 ) = True Then
For i9 = 0 To 11
If i9 <> i0 And i9 <> i1 And i9 <> i2 And i9 <> i3 And i9 <> i4 And i9 <> i5 And i9 <> i6 And i9 <> i7 And i9 <> i8 Then
mas2(9) = i9 + 1
If Tinkamas(9) = True Then
For i10 = 0 To 11
If i10 <> i0 And i10 <> i1 And i10 <> i2 And i10 <> i3 And i10 <> i4 And i10 <> i5 And i10 <> i6 And i10 <> i7 And i10 <> i8 And i10 <> i9 Then
mas2(10) = i10 + 1
If Tinkamas(10) = True Then
For i11 = 0 To 11
If i11 <> i0 And i11 <> i1 And i11 <> i2 And i11 <> i3 And i11 <> i4 And i11 <> i5 And i11 <> i6 And i11 <> i7 And i11 <> i8 And i11 <> i9 And i11 <> i10 Then
mas2(11) = i11 + 1
' skaiciuoti
If Tinkamas(11 ) Then
SK2 mas2
End If
End If
Next i11
End If
End If
Next i10
End If
End If
Next i9
End If
End If
Next i8
End If
End If
Next i7
End If
End If
Next i6
End If
End If
Next i5
End If
End If
Next i4
End If
End If
Next i3
End If
End If
Next i2
End If
End If
Next i1
Next i0
pab = Time
MsgBox "baige: " & vbCr & " pradzia: " & pr & vbCr & " pabaiga: " & pab
End Sub
Sub SK2(mas2 As Variant)
' cia paziuri ar visi masyvo nariai atitinka salygai
' ji naudojama tik kele kartu
Dim kiekis As Integer
kiekis = 0
For i = 0 To 10
If Ar_tinka(Abs(mas2(i) - mas2(i + 1))) = True Then
kiekis = kiekis + 1
Else
Exit For
End If
Next i
' patikrina paskutinio ir pirmojo masyvo nariu skirtuma
If Ar_tinka(Abs(mas2(11) - mas2(0))) = True Then
kiekis = kiekis + 1
End If
If kiekis = 12 Then
Debug.Print " rado"
End If
End Sub
Function Ar_tinka(k As Integer) As Boolean
' uzdavinio salyga skirtumui tarp dvieju gretimu masyvo nariu
Select Case k
Case 3, 4, 5
Ar_tinka = True
Case Else
Ar_tinka = False
End Select
End Function
Function Tinkamas(m As Integer) As Boolean
' suzinome ar masyvo gretimi nariai atitinka salyga
If Ar_tinka(Abs(mas2(m - 1) - mas2(m))) = True Then
Tinkamas = True
Else
Tinkamas = False
End If
End Function
Minde317 2010-01-14 17:43
nelabai graziai sukele ta koda
nikis 2010-01-14 19:15
http://www.copypastecode.com/ pabandyk.
DzeiPi 2010-01-14 22:18
Nepavyks nuvyti baubo vardu To Tu Ne(padarysi), nes neįmanoma sudėlioti skaičių taip, kaip prašoma:
akivaizdu, kad skaičiai 1, 2, 3, 10, 11, 12 negali būti tarpusavyje kaimynais, tad tarp jų turi būti įsiterpę po vieną iš likusių skaičių. Vadinasi, kiekvienas iš likusių skaičių, turi būti "artimas" bent dviems iš išvardintųjų. Tačiau 4 "artimas" tik vienam iš išvardintųjų (vienetui), tad neįmanoma sudelioti skaičių kaip prašoma.
Vilmas 2010-01-14 23:24
Jooo... O aš jau pradėjau dulkes pūsti nuo tos smegenų srities, kur dar kažkokios žinios likusios apie grafų teoriją... O čia sprendimas - super paprastas
diskrecioji 2010-02-11 23:13
Taip skaičių surašyti tiesiog neįmanoma! Ir uždavinio esmė ir yra įrodyt, kad taip surašyt tiesiog negalima.
Komentuoti gali tik registruoti lankytojai.
Neregistruotiems lankytojams komentavimas uždraustas siekiant sumažinti
paviršutiniškų, beverčių ir įžeidinėjančių žinučių kiekį.
Matematikos mėgėjams. Ramūno "kosminės kaimynystės" mįslė