Jump to content

Konkurss 2! (closed)


0xDEAD BEEF
 Share

Recommended Posts

0xDEAD BEEF

Saliec pareizi iekavas un matematiskas operacijas (+,-, *, /), ieposte atbildi seit foruma un (pirmais) sanem 10Ls naudas balvu (parskaitijums uz kontu, suti pk, vardu/uzvardu un konta numuru + banku)! Labo pusi aiztikt nedrikst. Likt prieksa (-) zimi ari nedrikst (1 2 5 = 9 -> -1 + 2 * 5). Kombinet, kapinat pakape, log, sin, (kvadratsakne), etc - nedrikst (1 2 3 = 9 -> 12 - 3). Laika limits - 21. aprilis (ritdiena) 24:00 (Latvijas laiks). SIA whiteCryption darbinieki piedalities nedrikst!

 

Uzdevums: 7 1 7 8 1 1 = 27

Balva: 10Ls

 

Piemers:

1 2 3 = 9 -> (1 + 2) * 3 = 9

 

Veiksmigi!

Beefs

--- KONKURSS IR NOSLEDZIES! APSVEICAM UZVARETAJU austere! STAY TUNED! PIRMDIEN (23. APR. 2012. 12:00 LV laiks!) NAKAMAIS KONKURSS!!! ---

Edited by 0xDEAD BEEF
Link to comment
Share on other sites

Žaks Noriss

Vattahell!?!?!? Pat nepaspēju uzdevumu ieraudzīt, viens jau atrisinājis...

Link to comment
Share on other sites

0xDEAD BEEF

Velos atrast sev (mums) gudru kolegi un pie viena sagadat funu sev un citiem. ;)

Beefs

EDIT: Vispirms FUN, pec tam kolegi! :)

Edited by 0xDEAD BEEF
Link to comment
Share on other sites

VB (Excel) express skripts priekš risinājuma:

 

Type aaa
op(6) As Integer
nums(7) As Double
opct As Integer
numsct As Integer
End Type
Dim aa1 As aaa
Dim order(5) As Integer
Sub Init()
Dim i%
aa1.nums(0) = 7
aa1.nums(1) = 1
aa1.nums(2) = 7
aa1.nums(3) = 8
aa1.nums(4) = 1
aa1.nums(5) = 1

aa1.opct = 5
aa1.numsct = 6

For i = 0 To aa1.opct
	aa1.op(i) = 0
	order(i) = 0
Next

End Sub
Function NextOrderZ() As Boolean
Dim i%, k%, m%
m = aa1.opct - 1
For i = m To 0 Step -1
	k = order(i)
	If k < m - i Then
		order(i) = k + 1
		NextOrderZ = True
		Exit Function
	End If
	order(i) = 0
Next
NextOrderZ = False
End Function
Function DoCalcA() As Double
Dim i%, j%, m%
Dim aa2 As aaa
Dim aa3 As aaa
Dim aa4 As aaa

m = aa1.opct - 1

aa3 = aa1

For j = 0 To m
	aa2 = aa3
	aa3.nums(0) = aa2.nums(0)
	aa3.numsct = 1
	aa3.opct = 0
	For i = 0 To aa2.opct - 1
		If i = order(j) Then
			Select Case aa2.op(i)
			Case 0:
				aa3.nums(aa3.numsct - 1) = aa3.nums(aa3.numsct - 1) + aa2.nums(i + 1)
			Case 1:
				aa3.nums(aa3.numsct - 1) = aa3.nums(aa3.numsct - 1) - aa2.nums(i + 1)
			Case 2:
				aa3.nums(aa3.numsct - 1) = aa3.nums(aa3.numsct - 1) * aa2.nums(i + 1)
			Case 3:
				If aa2.nums(i + 1) <> 0 Then
					aa3.nums(aa3.numsct - 1) = aa3.nums(aa3.numsct - 1) / aa2.nums(i + 1)
				Else
					aa3.nums(aa3.numsct - 1) = 300000
				End If
			End Select
		Else
			aa3.nums(aa3.numsct) = aa2.nums(i + 1)
			aa3.numsct = aa3.numsct + 1
			aa3.op(aa3.opct) = aa2.op(i)
			aa3.opct = aa3.opct + 1
		End If
	Next
Next

DoCalcA = aa3.nums(0)
End Function

Function Advance() As Boolean
Dim k%, i%, m%
m = aa1.opct - 1
For i = m To 0 Step -1
	k = aa1.op(i)
	If k < 3 Then
		aa1.op(i) = k + 1
		Advance = True
		Exit Function
	End If
	aa1.op(i) = 0
Next
Advance = False
End Function
Function GetResult() As String
Dim i%
Dim s1$
For i = 0 To aa1.opct - 1
	Select Case aa1.op(i)
		Case 0: s1 = "+"
		Case 1: s1 = "-"
		Case 2: s1 = "*"
		Case 3: s1 = "/"
	End Select
	GetResult = GetResult & " " & s1
Next
GetResult = GetResult & " : "
For i = 0 To aa1.opct - 1
	GetResult = GetResult & " " & order(i)
Next
End Function
Sub DoIt()
Init
Dim i%, j%, k%
Dim d As Double
Dim s$
For i = 0 To 30000
	If Not Advance Then Exit For
	For k = 0 To aa1.opct - 1
		order(k) = 0
	Next
	For j = 0 To 1000
		d = DoCalcA()
		If d = 27 Then
			If s = "" Then
				s = GetResult()
			Else
				s = s & vbCr & GetResult()
			End If
		End If
		If Not NextOrderZ() Then Exit For
	Next
Next
MsgBox s
End Sub

Edited by austere
  • Patīk 1
Link to comment
Share on other sites

hmm laikam jūtams ka mateni sen nēesmu mācījies, bet es īsti nesapratu to risinājumu, rēķinu kā gribu bet

7/((1-7)/8+1)-1 = 27 man sanāk 9,5

iekavas taču izpildās pirmās?

sanāk

7/((1-7)/8+1)-1 = 27

7/(-6/9)-1 = 27 ??

sanāk 7 dalam ar iekavu rezultātu un atņemam 1?

var kāds izskaidrot man dundukam :)

Link to comment
Share on other sites

0xDEAD BEEF

lol unknovn - dalisanai augstaka prioritate ka atnemsanai.. ;)

7 / (-6/8 + 1) - 1= 27

7 / (-6/8 + 1) = 28

7/(-6/8 + 8/8) = 28

7 / (1/4) = 28

Beefs

Edited by 0xDEAD BEEF
Link to comment
Share on other sites

 

7/(-6/9)-1 = 27 ??

 

Šeit tev kļūda, tur ir

7/(-6/8+1)-1 = 27 ??

 

Bet jautājums: vai uzvarētājs šoreiz skaitās? It kā publiski parādīja, ar ko tika atrasts risinājums. Un vai ir jēga tagad šo taisīt, ja jau visi tagad varēs izmantot šo skriptu.

Link to comment
Share on other sites

jā uzrakstīju un pamanīju to +1, visu laiku smadzenes bija ieciklējušās uz to ka iekavas izpildās pirmās, līdz ar ko es aizmirsu ka dala un reizina pirms saskaita, sanāk es rēķināju:

7/((1-7)/(8+1))-1 = 27

savā vecajā galvā ielikdams neesošas iekavas

Link to comment
Share on other sites

0xDEAD BEEF

Eventuali - nakamais uzdevums bus savadaks (konceptuali). Pacukstesu - es mekleju programmetaj-kolegi, tadel man loti patik sada veida risinajumi (skripts). :)

Beefs

Edited by 0xDEAD BEEF
Link to comment
Share on other sites

Nu šoreiz džeks ir sagatavojis skriptu pirms laika, vai vispār ir dabujis citur, tajā pašā laikā, citi mēģināja izdomāt galvā.

Es nečikstu, tapat, konstatēju faktu.

Edited by Леший
Link to comment
Share on other sites

:) es vesalu A4 lapu saķēpāju mēģinādams loģiski izštukot :)

Uzdevumi labi, ceru ka nākamais būs arī tāds ka var galvu palaust, nevis tikai ar skriptu izpildāms. esmu klasisko risinājumu piekritējs :)

Link to comment
Share on other sites

0xDEAD BEEF

Nu, bet ieprieks-sagatavosanas ir tikai labi. Piedevam - bija risks, ka konkursa2 uzdevums bus savadaks ka pirma konkursa. Tada gadijuma visa gatavosanas/skripta rakstisana butu kakim zem astes. Reizem risks atmaksajas. :)

Beefs

Link to comment
Share on other sites

Ņemot vērā, ko teica 0xDEAD BEEF, loģisks turpinājums būtu lielāks ciparu daudzums vai kas tml, ko uz papīra nevarētu atrisināt ne uz 1 A4 lapas, ne vienā kladē, kurā ir 96 A4 lapas (un ne 10 minūšu laikā, nedz arī 10 dienu laikā).

 

P.S. Lai uzrakstītu skriptu sarežģīta uzdevuma risināšanai, arī nepieciešams kārtīgi palauzt galvu ;)

Link to comment
Share on other sites

Daudziem gudriem cilvēkiem jau ir labs darbs, un nav laika tērēt laiku skriptu rakstīšanai... bet, no otras puses, šādi cilvēki Tevi arī droši interesē mazāk, jo viņiem ir mazāka iespēja, ka gribēs mainīt darbu. :)

Link to comment
Share on other sites

0xDEAD BEEF

Vilx, bet iedomajies, ka tu ieraugi uzdevumu, kuram vajag uzrakstit "skriptu" un tu pat zini, kas ir jaraksta, bet taja pasa laika saproti, ka uzdevums ir netrivials un sadu risinajumu loti iespejams ka esi izdomajis tikai tu. ;)

Beefs

Link to comment
Share on other sites

Nesaprasha, negribu visu to linkoto resursu lasīt, bet vismaz pašā sākumā tur jau ir pavisam citi noteikumi - tur skaitļu secība var tikt mainīta.

Link to comment
Share on other sites

Tas skripts nav, ne no googles, ne wikipedijas, bet paša rakstīts, nav taču tur nekā extra sarežģīta.

Pirms vairākiem gadiem esmu rakstijis, piemēram, savu skriptu interpretatoru un dambreti - tā ka trenniņš ir..

Edited by austere
Link to comment
Share on other sites

Uģis Lācis

Labinieks. :D Žetons gan konkrusa autoram, gan atbildes autoram.

 

Šāds kolēģa meklējums ir visnotaļ interesants un, ja godīgi, izklausās pēc stipri labākas prakses nekā, piemēram, valsts iestādēs tiek darīts. Par uzņēmumiem tik smalki nezinu, gan jau, ka ir labāki un sliktāki piemēri.

 

Nu un tādu skriptu, ja kaut kas līdzīgs darīts pirms tam, uzrakstīt tiešām ir vienkārši. Vienīgi, ja ir rakstīts pirms tam, tad ir priekšrocība salīdzinot ar citiem. Bet nu nekas negodīgs, tīri no prieredzes. Un arī izglītības. Pats algoritms ir triviāls, jāspēj tikai uzrakstīt ciklus, kas liek iekavas un zīmes, kā arī noparsēt uztaisīto vienādojumu. Pilnā pārlase šādā gadījumā notiek ļoti ātri, maksimālais lietderīgo iekavu skaits ir ierobežots, ciparus mainīt vietām ar nedrīkst. Īstenībā labs M.D. kādam studentam/skolniekam, kas nodarbojas ar datorzinībām. :)

Edited by Uģis Lācis
Link to comment
Share on other sites

Pats algoritms ir triviāls, jāspēj tikai uzrakstīt ciklus, kas liek iekavas un zīmes, kā arī noparsēt uztaisīto vienādojumu. Pilnā pārlase šādā gadījumā notiek ļoti ātri, maksimālais lietderīgo iekavu skaits ir ierobežots, ciparus mainīt vietām ar nedrīkst.

Tieši tāpēc loģisks turpinājums būtu garāki / sarežģītāki uzdevumi, kur pilnā pārlase prasītu ne vienu vien stundu.

Link to comment
Share on other sites

0xDEAD BEEF

Patiesiba nemaz nav jaliek iekavas. Atslegas vards ir operaciju izpildes prioritate. Konkretaja uzdevuma-

7 ? 1 ? 7 ? 8 ? 1 ? 1 = 27

ir 5cas operacijas. Atrisinajums ir sis piecas operacijas un to izpildes seciba. Sarezgitiba - 4^5 * 5! <-faktorialis

Beefs

Link to comment
Share on other sites

Tieši tāpēc loģisks turpinājums būtu garāki / sarežģītāki uzdevumi, kur pilnā pārlase prasītu ne vienu vien stundu.

Aha, un konkursā vinnēs tas, kam dators ir jaudīgāks :D

Loģisks turpinājums būtu uzdevums uz loģiku.

Link to comment
Share on other sites

Леший, acīmredzot neesi saskāries ar uzdevumiem, kur datora jaudai ir sekundāra nozīme - ar tādiem, kur nepietiks arī ar 100 jaudīgu datoru klasteri, lai sagremotu sūdīgu/viduvēju algoritmu...

 

beefs jau minēja, kāda ir konkrētā uzdevuma sarežģītība, veicot pilno pārlasi. Ja iedotu uzdevumu ar pietiekami lielu daudzumu ciparu, tad arī jaudīgs dators nevarētu iekļauties saprātīgā laikā, ja nekas advancētāks par pilno pārlasi netiktu pielietots - te arī parādās "uzdevums ar loģiku".

Cita lieta - uzģenerēt sakarīgu skaitļu virkni arī nav viegli (tādu, kurai risinājumu skaits būtu mazs) :)

Link to comment
Share on other sites

binary, tev iesaku paskatīties postu #15. Ja uzdevums būs vienkārši nedaudz sarežģītāks, visi paņems šo pašu kodu, bik modificēs un aidā, jaudīgāka kompja īpašnieks uzvarēs.

Again, es nečīkstu, bet šitais konkurss nu galīgi nedemonstrē prāta spējas.

Link to comment
Share on other sites

Vienkārši skaitļu (variāciju) pārāk maz.

 

Par modificēšanu - a kas vainas? Ja spēs izdomāt *labu* modificikāciju, tad tas ir ļoti apsveicami. Neba nu visiem būs viena un tā pati modifikācija.

 

Vēl kas - piedaloties viena cita uzdevuma risināšanā, sanāca palasīt arī turienes vietējo forumu. Viena no tur izteiktajām atziņām bija - nepietiek ar to, ka zini, *kā* to izdarīt - vajag spēt arī to implementēt (uzdevuma veiksmīgā risināšanā jāpielieto daudzas dažādas "viltības", katru no kurām var realizēt gan veiksmīgākos veidos, gan arī nekam nederīgos veidos).

Link to comment
Share on other sites

binary, piemēram, ir loģikas uzdevums, kuram es izdomāju risinājumu: ar curl tiek atlasīti rezultāti no google meklēšanas, kur kā meklēšanas kritērijs ir šis uzdevums. Līdz ar to, es būšu foršs kolēģis beefam, jo katram darba uzdevumam es spēšu ar algoritmu sameklēt risinājumu googlē un ar to pašu algoritmu ieintegrēt risinājumu projektā, pēc tam pieslīpējot. Tikai pēc tam, projekts atgadinās miskasti, bet tas jau nekas, galvēnais, ka viss ir ātri un kaut kā pat strādā. Tas ir быдлокодинг. Ja beefam vajag tādus kolēģus, tad veiksmi.

 

Izdomāt labu modifikāciju - miskuzi, to manuprāt var jebkurš, kuram ir kaut cik prāta.

Link to comment
Share on other sites

0xDEAD BEEF

Draugi - flame off!

Konkursa ideja ir - vispirms fun pēc tam kolēģis!

 

Apsolu, ka nākamais uzdevums būs interesants, googlē risinājumu nevarēs atrast (cerams.. :D), galvas nāksies palauzīt, bet būs fun un easy un jautri pat tiem, kas risina uz papīra. Stay tuned! Pirmdien 12:00!!!

 

Beefs

P.S. - ja mēs atgrieztos pie šī uzdevuma, tad jau pie n = 12 austeres algoritms (skripts) nebutu izmantojams. ;) Protams, es nesaku, ka eksistē labāks (daudz) algoritms, jo šis uzdevums ož pēc NP problēmas.. :)

Edited by 0xDEAD BEEF
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...