bubu Decembris 29, 2014 Share Decembris 29, 2014 (labots) C++ #include <iostream> // std::cout #include <algorithm> // std::transform #include <iterator> // std::ostream_iterator #include <functional> // std::mem_fun_ref #include <vector> // std::vector int main() { std::vector<void*> two; two.push_back(NULL); two.push_back(NULL); std::vector<void*> zero; std::vector<void*> one; one.push_back(NULL); std::vector<void*> five; five.push_back(NULL); five.push_back(NULL); five.push_back(NULL); five.push_back(NULL); five.push_back(NULL); std::vector<std::vector<void*> > all; all.push_back(two); all.push_back(zero); all.push_back(one); all.push_back(five); std::transform(all.begin(), all.end(), std::ostream_iterator<size_t>(std::cout), std::mem_fun_ref(&std::vector<void*>::size)); } Iespējams var vektorus novienkāršot par parastiem masīviem, bet šādi laikam strādā OK. Vēl viens C++ risinājums (kods ir pašā apakšā): https://gist.github.com/mmozeiko/2db4d8ef17a3182c5abc Līdzīgs iepriekšējam, tikai C risinājums (kods pašā apakšā): https://gist.github.com/mmozeiko/316664e2b6c2e012c082 Labots Decembris 30, 2014 - bubu Link to comment Share on other sites More sharing options...
binary Decembris 29, 2014 Share Decembris 29, 2014 bubu, otrais nestrādā - izdrukā papildus atstarpi. Ja "kNumber[]" pamaina uz "kNumber[9]", tad vairākas. Turklāt ar rindu numuriem ir tā "viltīgi" - varētu būt, ka neatbilst uzdevuma nosacījumiem, pieņemot, ka newline arī ir "viens simbols, kuru var pievienot/nodzēst". Link to comment Share on other sites More sharing options...
bubu Decembris 29, 2014 Share Decembris 29, 2014 (labots) Pielaboju otro. Kā tagad? Python2: import sys two = [None, None] zero = [0] * int(False) one = [None] five = [None, None, None, None, None] data = [two] data.append( \ zero) data.append( \ one) data.append( \ five) map(sys.stdout.write, map(str, map(len, data))) Nevar vienkārši rakstīt "zero = []", jo tad starp [ un ] varēs ielikt kaut ko un tad len(zero) būs 1. Šis tas ir sadalīts pa vairākām rindām, lai nevarētu aizkomentēt ar vienu simbolu (#) Labots Decembris 29, 2014 - bubu Link to comment Share on other sites More sharing options...
binary Decembris 29, 2014 Share Decembris 29, 2014 Tagad nezinu, lai citi paskatās (nav īsti laika). Pitons neder kaut vai dēļ tā, ka ar 1 simbolu var jebkuru rindu nokomentēt. Link to comment Share on other sites More sharing options...
argonaut Decembris 29, 2014 Share Decembris 29, 2014 Tā var šmaukties, ka ir jau gatavs fails ar "2015", vienalga kāds nosaukums, atrodas tajā pašā mapē. Programma atrod vienīgo failu un izvada saturu? Link to comment Share on other sites More sharing options...
bubu Decembris 29, 2014 Share Decembris 29, 2014 (labots) Un man šķiet, ka Pitonā (un arī C/C++ vai gandrīz jebkurā strong typing valodā) strādās tas veids, ko Ieleja rakstīja PHP: xx = "2015" if xx == "2015": print \ xx else: print \ "2015" Pitons neder kaut vai dēļ tā, ka ar 1 simbolu var jebkuru rindu nokomentēt. Pielaboju kodu, lai nevarētu aizkomentēt. Programma atrod vienīgo failu un izvada saturu? Atceries, ka tādai programmai būs jāstrādā arī pat ja nomainīs kaut vienu simbolu (faila vārdu? cikla iteratoru? utml). Vai to vari uzrakstīt? Labots Decembris 29, 2014 - bubu Link to comment Share on other sites More sharing options...
MarisO Decembris 29, 2014 Share Decembris 29, 2014 (labots) Леший haskell kods laikam nav "salaužams" Labots Decembris 29, 2014 - MarisO Link to comment Share on other sites More sharing options...
beryl Decembris 29, 2014 Share Decembris 29, 2014 · Hidden by Mezavecis, Decembris 29, 2014 - Herņa Hidden by Mezavecis, Decembris 29, 2014 - Herņa Kādi tur komentāri un interese. Admnis mežavecis, par spīti tam, ka brīdinājuma punkti sen beigušies, turpina uzturēt man liegumu postu skaitam diennaktī un privāto sarunu skaita limitu diennaktī - viena! Tā ka šeit ir tīņu garā administrēts forums, šādu konkursu labāk rīkot developers.lv vai php.lv ne šeit. Ar šo es atsakos no mežaveča administrētā foruma izmantošanas un lūdzu dzēst lietotāja profīu beryl no boot.lv. Link to comment
MarisO Decembris 29, 2014 Share Decembris 29, 2014 (labots) LISPs laikam nav diezko labs šādam uzdevumam, tur visur var likt ' vai ` , kas kodu pārtaisa par simbolu listu. Ta jau labāk erlang. -module(foo). -compile(export_all). -define(FOO, "2015"). foo() when ?FOO =:= "2015" -> io:format(?FOO); foo() -> io:format("2015"). Labots Decembris 29, 2014 - MarisO Link to comment Share on other sites More sharing options...
Vilx- Decembris 29, 2014 Share Decembris 29, 2014 Čau visiem! bet nu pieņemu, ka 'Vilx-' ir savs risinājums, kuram tiek piedzīti uzdevuma noteikumi, jo sākumā varēja mainīt vienu simbolu, tagad var pielikt vai dzēst vienu simbolu, vakarā varbūt jau varēs manipulēt ar pāris simboliem Nē, sorry, šoreiz nav mana vaina. Izlasi pats uzmanīgi uzdevuma nosacījumus. Vienīgais, ko es tur esmu precizējis ir vārds "jebkuru" (lai arī man šķita, ka tas jau tāpat ir saprotams). Uzdevuma nosacījumus mainīt netaisos, ja nu vienīgi precizēt kaut ko, ko kāds varētu vēl būt pārpratis. Nu re, jāgaida vien atbilde no Vilx-. Kādu atbildi jūs no manis gaidiet? Šī programma ir tāpat kā quine - tai ir daudz dažādu iespējamu risinājumu, daudzās dažādās valodās, un man nav nekāda "pareizā" risinājuma azotē. Link to comment Share on other sites More sharing options...
MarisO Decembris 29, 2014 Share Decembris 29, 2014 haskell to erlang -module(foo). -compile(export_all). bar() -> io:format(integer_to_list(hd(lists:filter(fun(X)-> X =:= 2015 end, [2015]) ++ [2015]))). Link to comment Share on other sites More sharing options...
argonaut Decembris 29, 2014 Share Decembris 29, 2014 Ar failu šarpā: Mapē jābūt exe un vienalga kāds fails ar ascii "2015" saturā. static void Main(string[] args) { string path = System.Reflection.Assembly.GetExecutingAssembly().Location; string[] files = System.IO.Directory.GetFiles(System.IO.Path.GetDirectoryName(path)); bool aa, aaaa; foreach (string f in files) { aa = string.Equals(f, path); aaaa = string.Equals(f, path); if (aa || aaaa) { int i = 5; } else { Console.Write(new System.IO.StreamReader(f).ReadToEnd()); } } } Link to comment Share on other sites More sharing options...
rejectee Decembris 29, 2014 Share Decembris 29, 2014 (labots) Java: public class Main { public static void main(String[] args) { String year = String.valueOf(Math.min(Math.max(2015, 2015), Math.max(2015, 2015))); StringBuilder output = new StringBuilder(); for(Character c: year.toCharArray()) { if (Character.isDigit(c) || Character.isDigit(c)) { // YOLO output.append(c); } } System.out.println(output); } } Paspēlēties var šeit: http://www.javarepl.com/console.html Edit: Tomēr laužās easy pievienojot "-" pārveidošanas uz string. Edit2: Salabots, ejot cauri simboliem un atlasot tikai ciparus. Labots Decembris 30, 2014 - rejectee Link to comment Share on other sites More sharing options...
Guest Decembris 29, 2014 Share Decembris 29, 2014 vairāk jautrs kā nopietns uzdevums, vismaz pagaidām izskatās ka ir vajadzīga gan pareizā valoda, kuru nevar salauzt kaut ko pieliekot (sanāk uzreiz atkrīt valodas kam rindu var aizkomentēt ar 1 simbolu), gan atrisinājumam jābūt ar pareizajam pārbaudēm. Link to comment Share on other sites More sharing options...
bubu Decembris 29, 2014 Share Decembris 29, 2014 Ar failu šarpā: Mapē jābūt exe un vienalga kāds fails ar ascii "2015" saturā. Nesapratu. Tava programma izvadīs visu failu saturu mapē - tai skaitā 2015 un exe faila saturu. Tātad outputā tā neizvada "2015". sanāk uzreiz atkrīt valodas kam rindu var aizkomentēt ar 1 simbolu) Un kā ar manu Pitona risinājumu #46 postā? Pitonā rindu aizkomentē ar # simbolu. Vai tur var kaut ko aizkomentēt? Link to comment Share on other sites More sharing options...
argonaut Decembris 29, 2014 Share Decembris 29, 2014 Nē, izvadīs tā faila saturu, kura nosaukums atšķiras no exe. Tāpēc jau pārbaude 10. rindā ar diviem booliem. Link to comment Share on other sites More sharing options...
Vilx- Decembris 29, 2014 Share Decembris 29, 2014 (labots) @@argonaut - Nu, principā programmai nevajadzētu paļauties uz kaut kādiem ārējiem failiem, kurus nevar modificēt. Vai arī tad šos failus arī uzskatām par programmas daļu un ļaujam tos modificēt. Un, enīvei - ieliec semikolu aiz "else" un viss nojuks tik un tā. @@rejectee - Pieliec Math.Min priekšā ~ simbolu (bitwise inversion). sanāk uzreiz atkrīt valodas kam rindu var aizkomentēt ar 1 simbolu Var arī tādās - tikai vajag uztaisīt tā, ka jebkuru rindu izkomentējot nekompilējas. Labots Decembris 29, 2014 - Vilx- Link to comment Share on other sites More sharing options...
ColorPulse Decembris 29, 2014 Share Decembris 29, 2014 Te vajag kodu, kurš dublējās ar iespējams mazāk rindiņām un operatoriem, jo lielākajā skaitā gadījumu pārrakstot operatorus vai kaut atstarpi ieliekot pie definējuma, nemaz nepalaidīs. Link to comment Share on other sites More sharing options...
Леший Decembris 29, 2014 Share Decembris 29, 2014 Леший haskell kods laikam nav "salaužams"Tā izskatās. Uzprasīju gudriem haskell guru - viņi nevarēja atrast variantu kā salauzt, kurš atbilstu nosacījumiem. bubu, lūdzu pielabo to garo rindu #44. postā, jo tā lauž bootu uz lapša ekrāna. _____ Gribu piedāvāt nedaudz grūtāku, bet tanī pašā laikā interesantāku uzdevumu - siltuma vienādojuma vizualizācija. Jāsaģenerē gif, līdzīgu šim: Viens bijušais kolēģis nesen uzrakstīja, izskatījās iespaidīgi: Input - monohroma bilde, kas simbolizē metāla plāksni. Ar melniem pikseļiem ir atzīmētas karstas zonas. Pieņemt, ka ievadā ir tikai divas temperatūras - karsta un auksta(0°C). Link to comment Share on other sites More sharing options...
bubu Decembris 30, 2014 Share Decembris 30, 2014 (labots) Edit2: Salabots, ejot cauri simboliem un atlasot tikai ciparus. Un ja nu es pielieku ! zīmi pirms Character.isDigit( c ) ? bubu, lūdzu pielabo to garo rindu #44. postā, jo tā lauž bootu uz lapša ekrāna. Man uz laptopa ar 1920x1080 ekrānu nekas nelaužās Labots Decembris 30, 2014 - bubu Link to comment Share on other sites More sharing options...
Vilx- Decembris 30, 2014 Share Decembris 30, 2014 @@Леший - interesants uzdevums, bet tā wikipēdijas lapa ir pārbāzta ar formulām. Pēdējoreiz diferenciālvienādojumu redzēju pirms 10 gadiem augstskolā, un jūtos laimīgs, ka to nav vajadzējis atkārtot. Citiem vārdiem sakot - slinkums burties cauri, kas prasītu vismaz pusi dienas, lai to izprastu. Nevari, lūdzu, izstāstīt vienkāršos vārdos, kāds ir gala algoritms/formula, pēc kuras tas tiek rēķināts? Link to comment Share on other sites More sharing options...
rejectee Decembris 30, 2014 Share Decembris 30, 2014 Un ja nu es pielieku ! zīmi pirms Character.isDigit( c ) ? Tieši tāpēc uzrakstīju tik nesakarīgi - divas reizes, lai vienai pārbaudei pieliekot negāciju nekas netiek salauzts. Link to comment Share on other sites More sharing options...
androidss Decembris 30, 2014 Share Decembris 30, 2014 rejectee - tad vajag if (Character.isDigit(c) || Character.isDigit(c)) nevis if (Character.isDigit(c) && Character.isDigit(c)) Link to comment Share on other sites More sharing options...
Vilx- Decembris 30, 2014 Share Decembris 30, 2014 @rejectee - Pieliec Math.Min priekšā ~ simbolu (bitwise inversion). Link to comment Share on other sites More sharing options...
rejectee Decembris 30, 2014 Share Decembris 30, 2014 Paldies par labojumu, androidss un par pirmo norādi no bubu, kurā es neiebraucu. Vilx-, es nesaprotu kā tas uzlabotu risinājumu. Vērtība varētu būt negatīva tikai ja pirms Math.Min ielikam mīnusa zīmi, kā arī lietojot bitwise inversion kodu varētu viegli pārveidot pievienojot vēl vienu "~" un tas neatbilstu uzdevuma nosacījumiem. Link to comment Share on other sites More sharing options...
bubu Decembris 30, 2014 Share Decembris 30, 2014 (labots) Un kā ar šādu izmaiņu? output.append(-c); Vilx- domā šādu izmaiņu (pielikt tikai vienu ~ simbolu): String year = String.valueOf(~Math.min(Math.max(2015, 2015), Math.max(2015, 2015))); Labots Decembris 30, 2014 - bubu Link to comment Share on other sites More sharing options...
Vilx- Decembris 30, 2014 Share Decembris 30, 2014 Aha. Rezultātā mēs iegūstam "-2016". Mīnus zīmi gan noēdīs, bet izvads tik un tā būs "2016". Link to comment Share on other sites More sharing options...
rejectee Decembris 30, 2014 Share Decembris 30, 2014 (labots) Nelieši, man jau likās, ka kaut kas sanāca. Labi, padomāšu kaut ko citu. Vienkāršākais jau laikam būs tas pats if/else, taču gribētos kaut kādu atjautīgāku veidu. String Y2015 = "2015"; System.out.println(Y2015.equals("2015") ? Y2015 : "2015"); Labots Decembris 30, 2014 - rejectee Link to comment Share on other sites More sharing options...
bubu Decembris 30, 2014 Share Decembris 30, 2014 (labots) Jap, tas ir tas, ko es saku #49 postā. Ja vien mainīgais tiek definēts kā strings, tad imho tas strādās jebkurā valodā, izņemot ja šajā valodā stringam ir iespējams pielietot kaut kādu dīvainu vien-simbola operāciju. Labots Decembris 30, 2014 - bubu Link to comment Share on other sites More sharing options...
argonaut Decembris 30, 2014 Share Decembris 30, 2014 Var ar *, & simboliem sabojāt C nemanaged valodās. Link to comment Share on other sites More sharing options...
Vilx- Decembris 30, 2014 Share Decembris 30, 2014 C valodā - itkā jā, bet tad tur sāk parādīties nedefinētas uzvedības, un man šķiet, ka šādu modifikāciju arī vajadzētu uzskatīt par "nelegālu", tāpat kā modifikācijas, kuras traucē sakompilēties. Bet, nu, vienošanās jautājums. Jap, tas ir tas, ko es saku #49 postā. Ja vien mainīgais tiek definēts kā strings, tad imho tas strādās jebkurā valodā, izņemot ja šajā valodā stringam ir iespējams pielietot kaut kādu dīvainu vien-simbola operāciju.Nu, jā, principā jau tas arī ir tipiskais risinājums, tikai vēl jāskatās, kādas kurā valodā ir iespējas to salauzt. OK, laikam jau vairāk te nekas jauns neparādīsies, tad rekur, ir links, kur es šito uzdevu pirms 3 gadiem. Link to comment Share on other sites More sharing options...
Леший Decembris 31, 2014 Share Decembris 31, 2014 Vakar iztērēju ~3 stundas, mēģinot salauzt to 29 char versiju haskellā, pirms pamanīju, ka kāds to jau izdarīja ar skriptu. Tiešām iespaidīgi, nebūtu iedomājies izmantot pattern matching: main=print$(\xx@2012->xx)2012 Īsumā paskaidrošu, lai cilvēki saprastu, kāpēc tas ir spēcīgi. $ ir aplikācijas simbols. print $ right_side ir tas pats, ka print (right_side). Tiek izmantots, kad ir diezgan paliels nestošanas koks, lai tiktu vaļā no ))))) beigās. iekavās ir nodefinēta lambda funkcija, jeb anonima funkcija - funkcija bez nosaukuma. Formats ir šāds: (\arg -> body). Pēc iekavām iet arguments - tā, ka tā ir anonima funkcija, mēs to uzreiz izsaucam. Piemēram (\x -> x * x) 2 būs 4. Haskell ļauj matchot argumentus gan pēc struktūras (piemēri - \x:[] - masīvs ar vienu elementu; \[] - tukšs masīvs; \x:xs - masīvs ar vairākiem elementiem, pirmajam tiks piešķirts vārds x; \(a,b) - pāris), gan pēc vērtības (\1 - šis funkcijas variants izpildīsies, kad arguments ir 1), gan kombinējot mainīgo un vērtību (\x@1 - piešķir argumentam nosaukumu x, un šis funkcijas variants izpildas, kad x ir 1) konkrēta piemērā, cilvēks definē funkciju ar argumentu xx, kura atgriež pašu xx, pie tam, tāds funkcijas behavior ir definēts priekš versijas, kad xx ir 2012. Ja mainīt padoto argumentu, tad būs compile error, jo funkcija nav definēta variantiem, kad xx nav 2012. Tas pats, ja mainīt to xx@2012. Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!