Jump to content

Kā sauc veselus skaitļus, kurus nevar iegūt no iepriekšējo skaitļu summas?


Konko
 Share

Recommended Posts

  • Replies 101
  • Created
  • Last Reply

Top Posters In This Topic

  • Vilx-

    25

  • bubu

    5

  • Konko

    40

  • nullchar

    6

Top Posters In This Topic

Jā, bet pielietojums pavisam cits. Svarīga īpašība, ka tos nevar iegūt kā iepriekšējo skaitļu summu. Tātad vai ir kāds speciāls apzīmējums?

Link to comment
Share on other sites

Wtf? :? 8=5+3 Kas tur ko neiegūt? :?

Katru skatli drīkst izmantot tikai vienu reizi. Skaitļu 3 un 5 iepriekšējā virknē nav!

Link to comment
Share on other sites

Taisi tad pats tādas virknes cik ādā lien! Izvēlies pirmos divus skaitļus uz labu laimi, un katru nākamo iegūsti kā:

 

AN = AN-1 + AN-2 + 1

 

Tā kā tā ir variācija par tēmu Fibonači skaitļi, tad es pat teiktu, ka tur droši vien var iegūt kādu formulu, lai ātri aprēķinātu AN.

 

Tikai jautājums tāds - a ko tas Tev dod? Iekšējā balss saka, ka Tu kaut ko mazliet neesi iebraucis par skaitīšanas sistēmām...

 

Pievienots: Ups, nomudījos! Formula ir:

 

AN = AN-1 + AN-2 + ... + A1 + 1

 

Un tie tad nav Fibonači skaitļi. Nu, bet, tas nemaina lietas būtību!

Link to comment
Share on other sites

IMHO nav īpaša nosaukuma. Bet vēlreiz - Tu esi drošs, ka nejauc kaut ko par tēmu "skaitīšanas sistēmas"? Zini, binārās, ternārās, decimālās, heksadecimālās, u.t.t.? Varbūt pastāsti par to savu uzdevumu kaut ko? :unsure:

Link to comment
Share on other sites

Kad pats būšu ticis skaidrībā uzrakstīšu. Šobrīd vienkārši izmantoju šo fenomenu, jo nekur par to lasījis neesmu. Programma to ņem pretīm un darbojas.

Link to comment
Share on other sites

Atceras visi anekdoti, kur bija tada fraze: "Nezinu, kas tas ir bet siers vinam garsho" :D

Tas ir FENOMENS bet galvenias, ka nem pretii

Link to comment
Share on other sites

Ipeklofijs
Kad pats būšu ticis skaidrībā uzrakstīšu. Šobrīd vienkārši izmantoju šo fenomenu, jo nekur par to lasījis neesmu. Programma to ņem pretīm un darbojas.

Nē, nu patiešām, es nesaprotu - vai es esmu sajucis vai jūs visi te tādi jocīgi šovakar: tā taču ir binārā skaitīšanas sistēma, elektronisko skaitļotāju pamatu pamats. http://en.wikipedia.org/wiki/Binary_numeral_system

Link to comment
Share on other sites

Guest ADEX

Tā NAV binārā skaitīšanas sistēma. Visi skaitļi pierakstīti decimālajā.

Tās ir divnieka pakāpes, es jau teicu.

Link to comment
Share on other sites

Ipeklofijs
Tā NAV binārā skaitīšanas sistēma. Visi skaitļi pierakstīti decimālajā.

Tās ir divnieka pakāpes, es jau teicu.

 

TWF!

Acīmredzot Tu nesaproti, kas ir binārā skaitīšanas sistēma. Tas nav nekas cits kā divnieka pakāpju apzīmēšana ar "1" un "0".

Link to comment
Share on other sites

Guest ADEX

Binārā skaitīšanas sistēma ir:

1

10

100

1000

10000

 

Bet pirmajā postā ir tas pats, tikai DECIMĀLAJĀ sistēmā.

Link to comment
Share on other sites

Labi, uzrakstīšu, ceru ka nezviegsat!

Ir čekboksi. Teiksim 4 gabali. Katram tiek piekārtots attiecīgais skaitlis.

Pirmajam - 1

Otrajam - 2

Trešajam - 4

Ceturtajam - 8

Izmantojot to, ka visas šo skaitļu summu kombinācijas ir unikālas (neatkārtojas) var izveidot intersantus loģisko kombināciju nosacījumus.

Labots - Konko
Link to comment
Share on other sites

Guest ADEX

Biti. Katrs čekboksis atbilst vienam bitam. Un tagad sākas binārā skaitīsanas sistēma. Neredzu, par ko būtu jāzviedz.

 

Un tie skaitļi tieši tā arī saucas: divnieka pakāpes.

 

Es gan aprakstītu to nevis tā, ka pirmajam atbilst 1, otrajam 2, trešajam 4, bet gan - pirmajam atbilst 2^0, otrajam 2^1, trešajam 2^2 ... n-tajam 2^(n-1).

Link to comment
Share on other sites

Mani interesē tieši tā īpašība, ka visi summu varianti ir pilnīgi atšķirīgi. Divnieku pakāpes ņe pričom. Ja summa ir 13 tad skaidrs ka atķeksēti ir pirmais, trešais un ceturtais čekboks. Cita varianta nav!

Link to comment
Share on other sites

Guest ADEX

Bet tā arī ir, ka pilnīgi skaidrs. Saraksti tos skaitļus (binārā formā) citu zem cita un saskaiti. Redzēsi, ka katrs vieninieks paliek savā vietā. Pārveido uz decimālo sistēmu un gatavs.

 

Tās ir divnieka pakāpes. Un nekāds ņipričom. Divi pakāpē (n-2).

^ nozīmē kāpināšanu.

Link to comment
Share on other sites

Konko ir taisnība - šādam nolūkam nav obligāti jāizmanto divnieka pakāpes. Derēs jebkura šāda virkne. Taču uz datora visizdevīgāk ir izmantot tieši divnieka pakāpes. Vispār, jebkurā gadījumā visizdevīgākās ir divnieka pakāpes, ja vajag saglabāt katram čekboksim tikai 2 stāvokļus (ja būtu vairāki stāvokļi, tad būtu cita skaitļa pakāpes). Iemesls ir tāds, ka šādā veidā Tev tie skaitļi sanāks vismazākie. T.i. informācija būs saspiesta viskompaktākajā veidā. Rezultātā, vienā baitā Tu varēsi saglabāt informāciju par veseliem 8 čekbokšiem. Izmantojot citas virknes, Tev nesanāks tik daudz. Pie tam uz datora ir pieejamas arī foršas bitu operācijas, ar kuru palīdzību var ērti operēt ar divnieka pakāpēm. Tā piemēram, ja Tev ir šāds skaitlis X (izveidots saskaitot čekbokšu skaitļus), tad noskaidrot, vai konkrētais čekboksis ir ieslēgts, vai nē, var ar AND operāciju. Ar OR operāciju savukārt var skaitli X viegli modificēt tā, lai konkrētais čekboksis būtu ieslēgts (un, atšķirībā no saskaitīšanas, nebūs jāuztraucas par to, vai viņš pirms tam tur jau bija iekļauts, vai nē). Ja gribas no skaitļa X izvākt konkrētu čekboksi, tad gan būs grūtāk. Vajadzēs AND un NOT kombinēt. OK, piemēri pseidokodā:

X -- vērtība, kura apzīmē čekbokšu stāvokli.

X <= X OR 128; // Tagad noteikti X satur čekboksi ar vērtību 128
X <= X OR 128; // Šo mēs varam atkārtot N-tās reizes, un X no tā nemainīsies, un čekboksis 128 garantēti būs ieslēgts

IF (X AND 128) = 128 THEN
// Čekboksis 128 bija ieslēgts
ELSE
// Čekboksis 128 bija izslēgts

X = X AND (NOT 128) // Tagad čekboksis 128 noteikti būs izslēgts
X = X AND (NOT 128) // Arī šo mēs varam atkārtot neierobežoti daudz

Kurā valodā Tu raksti? Varētu pateikt precīzu sintaksi!

Link to comment
Share on other sites

Mani interesē tieši tā īpašība, ka visi summu varianti ir pilnīgi atšķirīgi. Divnieku pakāpes ņe pričom. Ja summa ir 13 tad skaidrs ka atķeksēti ir pirmais, trešais un ceturtais čekboks. Cita varianta nav!

 

Njā, tā ir jebkurai skaitīšanas sistēmai ļoti svarīga īpašība, gan binārajai, gan decimālajai, gan citām, ka katru skaitli tajā var pierakstīt vienā un tikai vienā veidā.

Labots - Bastjens
Link to comment
Share on other sites

Baigais Janka

Kad mēs augām, šito padarīšanu sauca vienkārši par flagiem, un miers :) Kur var tik vienkāršu štelli tik sarežģīti uzjautāt un aprakstīt... :)

Link to comment
Share on other sites

Mūsdienās, ja vien nav kāds labs iemesls, dauz ērtāk ir izmantot boolean masīvus. Pāris baiti šurpu turpu vairs nevienu neuztrauc.

Link to comment
Share on other sites

Man atklāti sakot šis variants ar skaitļu summām liekas vis uzskatāmākais un saprotamākais.

If CheckBox1.Value = True Then a = 1
If CheckBox1.Value = False Then a = 0
If CheckBox2.Value = True Then b = 2
If CheckBox2.Value = False Then b = 0
If CheckBox3.Value = True Then c = 4
If CheckBox3.Value = False Then c = 0
If CheckBox4.Value = True Then d = 8
If CheckBox4.Value = False Then d = 0


z = a + b + c + d
If (z = 1) Or (z = 4) Or (z = 5) Or (z = 7) Or (z = 11) Or (z = 13) Or (z = 14) Or (z = 15) Then TextBox2.Value = 0
If (z = 2) Or (z = 3) Or (z = 6) Or (z = 8) Or (z = 9) Or (z = 10) Or (z = 12) Then TextBox2.Value = 1
If z = 10 Then TextBox2.Value = 2

 

Viegli saprast visu testa pareizo atbilžu loģiku un novērtējuma punktus.

Labots - Konko
Link to comment
Share on other sites

Guest ADEX

Jā, ļoti viegli saprast, it īpaši - ja smaidiņš koda vidū rēgojas. :mrgreen:

Grūti bija code tagos ielikt?

Link to comment
Share on other sites

Piemēram:

1

2

4

8

16

32

Vai šādiem skaitļiem ir kāds apzīmējums.

 

šos sauc par NATURĀLIEM SKAITĻIEM un, jā, tiem ir apzīmējums: N

 

edit: pieliku bold un uppercase :)

Labots - kroko
Link to comment
Share on other sites

"Naturāls skaitlis (jeb dabisks skaitlis) ir jebkurš vesels pozitīvs skaitlis. Tie veido bezgalīgu kopu {1, 2, 3, ...}. Šos skaitļus, kā zināms, izmanto skaitīšanai.

Jāatzīmē, ka dažās valstīs (piemēram, Igaunijā) arī nulli pieskaita pie naturālajiem skaitļiem. Tad iegūst kopu {0, 1, 2, 3, ...}.

Naturālo skaitļu ir bezgalīgi daudz un neeksistē lielākais naturālais skaitlis."

 

NU nav mana virkne naturālo skaitļu virkne!

Link to comment
Share on other sites

tu jautāji

Vai šādiem SKAITĻIEM ir kāds apzīmējums.

es tev atbildēju cik vien pragmatiski var. jā, tevis nolistētajiem SKAITĻEM ir apzīmējums N. tie ir

jebkurš vesels pozitīvs skaitlis

vai tad ne?

 

tagad tu piesauc skaitļu virkni. tad arī jautā "kā sauc skaitļu virkni":

tevis nolistētie skaitļi pieder funkcijai (tautā sauktu arī par ģeometrisko progresiju)

a(n)=ar^n-1

, kur n- naturāls skaitlis (loceklis), a- virknes pirmais loceklis (tavā gadījumā 1), r - kvocients? (videni beidzu sen) (tavā gadījumā ir 2)

a(1) = 1 = 1*2^(1-1)

a(2) = 2 = 1*2^(2-1)

a(3) = 4 = 1*2^(3-1)

a(4) = 8 = 1*2^(4-1)

a(5) = 16 = 1*2^(5-1)

a(6) = 32 = 1*2^(6-1)

 

noīsināt augstāk rakstīto tu nonāc pie fakta, ka tevis nolistētie skaitļi pieder

2^n, kur n∈N(0)

Power_of_two

 

ja tu atkal esi iedomājies, ka šiem skaitļiem ir īpašs nosaukums JO viņi pieder iepriekšminētajām virknēm, tad - nē, man nav zināms īpašs nosaukums skaitļiem, dots pēc tā principa, ka viņi pieder augstāk minētajām virknēm..

 

ja jau tu gribi asināt prātu, tad sāc ar to, ka uzraksti pierādījumu, ka tavus skaitļus "nevar iegūt no iepriekšējo skaitļu summas". kaut vai sāc ar 3 blakus esošiem virknes locekļiem, jeb

ar^(n-1)+ar^((n+1)-1) - ar^((n+2)-1)≠0, kur a un r nav 0

2^n+2^(n+1)-2^(n+2)≠0

Link to comment
Share on other sites

Man atklāti sakot ir diezgan vienaldzīga lieta par kaut kādiem pierādījumie. Viemkārši domāju, ka ir lieta, ko es nezinu, bet kura citiem ir skaidri zināma. Tagad izskatās, ka tāds fenomens kā "skaitļi ko nevar iegūt no iepriekšējo skaitļu summas" tomēr nav definēts. Ar to man arī pietiek!

Link to comment
Share on other sites

nebūs korekti tā teikt. apskati tādu keywordu kā Anti-Fibonacci, kas būtu līdzvērtīgs kā meklēt "anti- tā virkne, kur locekļi veido summas".

kā arī ir tādas skaitļu virknes, kur nevienu no locekļiem nevar iegūt kā citu (tev jau laikam interesē gadījums, kad tie "citi" ir tikai virknē iepriekš esoši locekļi, kas arī ir šaura domāšana) locekļu summas un kur "nosaukums" ir iedots nevis "x skaitļu virkne", bet "x skaitļi". tu esi jokains, ja atbildi meklē pēc principa "man vajag zināt kā sauc skaitļus", bet esi akls pret faktu, ka parasti dod "verbālus" nosaukumus virknēm, jo tās jau dod šo īpašību. matemātikā tā nedrīkst domāt. ja tev vajag domrakstu literatūrā rakstīt un tagad grauz zīmuli, jo nezini, kā nosaukt tos savus skaitļus- varbūt apdomājies vēlreiz un lieto literāru formu "skaitļi kas pieder virknei ar nosaukumu x". varbūt aizies? :80:

Link to comment
Share on other sites

To Kroko!

Atzīšos, ka neko daudz no Taviem domu graudiem nesapratu. Bet vienalga - paldies!

 

Par Antifibonači skaitļiem atradu šādu informāciju:

anti-Fibonacci numbers would be 5, 8, 9, 24, 34, 38, 45, 50, etc.

Bet šī virkne galīgi neatbilst maniem nosacījumie.

Jo 5+9+24=38

Tātad skaitli 38 var iegūt saskaitot iepriekšējos skaitļus.

Labots - Konko
Link to comment
Share on other sites

Konko, iesaku darīt šitā (sorry, nesapratu, kas ar to garo izteiksmi tur bija domāts):

z = 0
If CheckBox1.Value = True Then z = z OR 1
If CheckBox2.Value = True Then z = z OR 2
If CheckBox3.Value = True Then z = z OR 4
If CheckBox4.Value = True Then z = z OR 8

if (z AND 1) = 1 then ChecBox1.Value = true
if (z AND 2) = 2 then ChecBox2.Value = true
if (z AND 4) = 4 then ChecBox3.Value = true
if (z AND 8) = 8 then ChecBox4.Value = true

Šim pierakstam ir sekojošas priekšrocības:

  • Tā parasti dara visi programmētāji, tāpēc to uzreiz varēs viegli saprast citi cilvēki;
  • Tas ir īsāk un vienkāršāk;
  • Šis kods (un visi Tavi IF'i) strādās arī tad, ja vēlāk pēkšņi parādīsies CheckBox5;
  • Tavi IF'i kļūs saprotamāki, ja sastāvēs no daļiņām formā (z AND x) = x, jo par katru daļiņu varēs domāt kā vienu čekboksi. Attiecīgi, ar AND/OR kombinējot šīs daļiņas būs skaidrāka koda jēga - ka IF'am ir jānostrādā gadījumā, ja ir ieslēgts čekboksis A, B un C.

Link to comment
Share on other sites

Manai izteiksmei doma bija tāda, ka tiek apskatīti visi iespējamie čekboksu iezīmēšanas varianti. Un attiecīgi tiek izlikts novērtējums. Pareizas atbildes satur divi no tiem (otrais un ceturtais). Ja abi iečeksēti - 2 punkti. Ja pareizi iečeksēts tikai viens, bet otrs nepareizs, tad - 1 punkts. Ja iečeksēti 3 vai visi 4 čekboksi tad - 0 punkti. Man vienkārši likās ka mana pieeja ir ļoti skaidri saprotama.

Link to comment
Share on other sites

Hmm... šajā gadījumā Tev patiesi ir sarežģīts nosacījums. Redzi, tiem hardkodētajiem skaitļiem (1, 4, 5, 13, 11, u.t.t.) ir divi trūkumi - pirmkārt, tie nestrādās, ja parādīsies 5. čekboksis. OK, šajā gadījumā varbūt Tu esi drošs, ka nekad neparādīsies, bet - kāpēc riskēt, ja ir tik vienkārši izvairīties no šīs problēmas?

 

Otrs trūkums tomēr ir lasāmība. Pēc pāris nedēļām (nemaz nerunājot par mēnešiem), kurš vairs atcerēsies, ko tas viss nozīmēja? Nāksies ņemt blakus papīra lapu un katru no tiem skaitļiem atkal sadalīt pa sastāvdaļām. Ja Tev kodā ir daudz tādu vietu, tas būs ļoti ķēpīgi. Pats pēcāk būsi priecīgāks, ja izmantosi variantu, kurš jau priekšā saka, par kuriem čekbokšiem ir runa.

 

Šādā sakarā es vispār ieteiktu izmantot vairākus Boolean mainīgos, ja vien nav kāda laba iemesla tā nedarīt. Tad tas IF's paliktu aptuveni šāds (pieņemsim, ka mani mainīgie saucas CB1, CB2, CB3 un CB4):

IF CB2 AND CB4 THEN Result = 2
ELSE IF (CB2 XOR CB4) AND (CB1 XOR CB3)  THEN Result = 1
ELSE Result = 0

Šajā gadījumā varēja izmantot XOR, un izteiksmi vēl vienkāršot. Šajā gadījumā izteiksmi viegli "izlasīt" kā:

 

Ja ir abi pareizie, tad 2 punkti; ja viens pareizs un viens nepareizs; tad 1 punkts; citādi 0 punkti.

 

Boolean mainīgo izmantošana atviegloja pasākumu, jo nevajadzēja tur taisīt to (z and X) = X.

 

Vai nešķiet, ka šādi ir lasāmāk? :)

 

Pievienots: Manā gadījumā gan variants, kad ir ieķeksēts tikai 1 pareiza atbilde un viss, arī tiek piešķirti 0 punkti. Vai vajadzēja tomēr 1 punktu? Ja jā, tad var šitā:

IF CB2 AND CB4 THEN Result = 2
ELSE IF (CB2 XOR CB4) AND (NOT CB1 OR NOT CB3)  THEN Result = 1
ELSE Result = 0

Link to comment
Share on other sites

He, droši! :) Atceros pats savus programmēšanas pirmsākumus, kad arī ar šitādām lietām mocījos. :) Iesaku apgūt vienu ieradumu - ja redzi šitādas vietas, kur kods nav "paškomentējošs" (t.i. uz viņu paskatoties uzreiz nevar pateikt, kas ar to domāts), raksti blakus komentārus, ko tā Tava trakā izteiksme tur īsti dara. Nevajag rakstīt komentārus acīmredzamām lietām ("Piešķiram X vērtību 5"), tas arī ir par traku, bet šitādās vietās noderēs.

 

Pievienots: Kaut arī pārsvarā tad vajadzētu domāt, kā novienkāršot šo kodu. Pārsvarā to var panākt sadalot visu pasākumu mazākās, vienkāršākās daļiņās, kura katra jau ir acīmredzama. Ja labi ietrenējas, tad varu pateikt, ka ir ĻOTI reti tādas vietas, kur pēcāk vajag komentārus rakstīt klāt (lai arī ik pa laikam, protams, kāda uzrodas).

Link to comment
Share on other sites

Diemžēl VBA kurā taisu šos kodus atsakās darboties ja nav precīzi nodefinēti visi iespējamie varianti.

 

 If (CheckBox2.Value = True) And (CheckBox4.Value = True)
And (CheckBox1.Value = False) And (CheckBox3.Value = False) Then TextBox2.Value = 2

 

Ar šo pierakstu sāka darboties tikai pilnīgi pareizās atbildes variants. Noprotu, ka arī citos man būtu jāraksta ļoti

daudz papildus loģisko sakarību.

Tāpēc laikam jau palikšu pie sava iepriekšējā varianta ar skaitļu virkni. Tas manuprāt ir vieglāk saprotams.

Pamēģināju arī ar 5 čekboksiem. Viss darbojas un varu uzlikt kādas punktu vērtību kombinācijas vēlos. Bez skaitļu virkņu izmantošanas tas būtu bezcerīgi. Jo tiešām kods darbojas tikai tad ja ir aptverti visi iespējamie varianti. Ja kaut viens izlaists kods nedarbojas. Un ar skaitļiem tas ir vienkārši. 5 čekboksiem skaitļu summas var būt no 1 līdz 31 un atliek katrai precīzi nodefinēt kas notiek tālāk.

Labots - Konko
Link to comment
Share on other sites

Redz, precīzi jānodefinē jau ir jebkurā gadījumā... Un, ja čekbokšu un pareizo atbilžu skaits nav ierobežots, tad paliek vēl viltīgāk... OK, par savu pirmo piemēru piekrītu, biju nomudījies. Vajadzēja būt šitā:

IF CB2 AND CB4 AND NOT CB3 AND NOT CB1 THEN Result = 2
ELSE IF (CB2 XOR CB4) AND (NOT CB1 OR NOT CB3)  THEN Result = 1
ELSE Result = 0

Tagad aizstāj CB2 ar CheckBox2.Value=True un būs Tev.

 

Redzi, izstiepies vai saraujies, Tev tāpat vajadzēs uzrakstīt kaut ko tādu, kas ir ekvivalents šim. Tu, protams, to vari darīt ar saviem skaitļiem, bet tas būs grūtāk saprotams vēlāk (sk. manus iepriekšējos postus).

 

He, nāk prātā teiciens - "Kodu debugot ir divreiz grūtāk, nekā to uzrakstīt. Tātad, ja Tu uzraksti kādu kodu tik viltīgi, cik vien spēj, tad Tu pēc definīcijas nespēsi to debugot." ;)

Link to comment
Share on other sites

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 kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share


×
×
  • Izveidot jaunu...