Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3Ao amin'ny ampahany teo aloha (1, 2) niresaka momba ny globals toy ny hazo isika, amin'ity iray ity dia hijery ny globals ho toy ny arrays kely.

Sparse Array dia karazana array izay mitovy ny sanda ny ankamaroan'ny sanda.

Amin'ny fampiharana, ny arrays dia matetika lehibe loatra ka tsy misy dikany ny fibodoana fahatsiarovana amin'ny singa mitovy. Noho izany, dia misy dikany ny fampiharana ny arrays kely amin'ny fomba izay tsy ho very maina ny fahatsiarovana amin'ny fitehirizana soatoavina mitovy.
Amin'ny fiteny fandaharana sasany, misy arrays vitsivitsy ao anatin'ilay fiteny mihitsy, ohatra ao amin'ny J, MatLab. Ny fiteny fandaharana hafa dia manana tranomboky manokana ahafahanao mampihatra azy ireo. Ho an'ny C++ - ny ary ny hafa.

Globals dia kandidà tsara amin'ny fampiharana ny arrays satria:

  1. Mitahiry ny soatoavin'ny nodes sasany fotsiny izy ireo ary tsy mitahiry ny soatoavin'ireo tsy voafaritra;
  2. Ny interface hidirana amin'ny sandan'ny node dia tena mitovy amin'ny habetsahan'ny fiteny fandaharana mampihatra ny fidirana amina singa maromaro maromaro.
    Set ^a(1, 2, 3)=5
    Write ^a(1, 2, 3)

  3. Ny Global dia rafitra ambany indrindra amin'ny fitehirizana angon-drakitra, noho izany dia manana toetra mampiavaka ny hafainganana izy (manomboka amin'ny varotra an'hetsiny ka hatramin'ny folo tapitrisa isan-tsegondra, miankina amin'ny fitaovana, jereo eto ambany). 1)

Satria ny eran-tany dia rafitra maharitra, dia misy dikany ny mamorona arrays kely amin'izy ireo rehefa fantatra mialoha fa tsy ho ampy ny habetsaky ny RAM.

Ny iray amin'ireo toetran'ny fampiharana tsy misy array dia ny mamerina ny sanda mahazatra raha misy fidirana amin'ny sela tsy voafaritra.

Izany dia azo ampiharina amin'ny fampiasana ny asa $GET amin'ny COS. Ity ohatra ity dia mandinika array 3 dimensional.

SET a = $GET(^a(x,y,z), defValue)

Inona no asa mitaky arrays kely ary ahoana no ahafahan'ny globals manampy?

Adjacency (fifandraisana) matrix

Matrices toy izany ampiasaina hanehoana ny grafika:

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

Mazava ho azy fa ny lehibe kokoa ny grafika, ny aotra betsaka kokoa ao amin'ny matrix. Raha, ohatra, isika dia maka tabilao tambajotra sosialy ary manolotra izany amin'ny endrika matrix mitovy, dia saika misy aotra tanteraka izany, i.e. dia ho filaharana vitsy.

Set ^m(id1, id2) = 1 
Set ^m(id1, id3) = 1 
Set ^m(id1, id4) = 1 
Set ^m(id1) = 3 
Set ^m(id2, id4) = 1 
Set ^m(id2, id5) = 1 
Set ^m(id2) = 2
....

Amin'ity ohatra ity dia mitahiry eran-tany isika ^m matrix connexion, ary koa ny isan'ny sisiny isaky ny node (iza no namana ary ny isan'ny namana).

Raha tsy mihoatra ny 29 tapitrisa ny isan'ny singa ao amin'ny grafika (io isa io dia raisina ho vokatry ny 8 * haben'ny tsipika ambony indrindra), izany hoe, fomba ara-toekarena kokoa hitehirizana matrices toy izany dia tady kely, satria ny fampiharana azy dia manatsara ny banga lehibe amin'ny fomba manokana.

Ny fanodinkodinana miaraka amin'ny tady bit dia tanterahan'ny asa $BIT.

; установка бита
SET $BIT(rowID, positionID) = 1
; получение бита
Write $BIT(rowID, positionID)

latabatra fifindran'ny milina fanjakana

Koa satria ny grafika tetezamita amin'ny automaton voafetra dia grafika tsotra, dia ny tabilao tetezamita an'ny automaton voafetra dia mitovy matrix mifanakaiky resahina etsy ambony.

Automata finday

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

Ny automatique finday malaza indrindra dia lalao "Life", izay, noho ny fitsipiny (rehefa manana mpifanolo-bodirindrina maro ny sela iray, dia maty izy) dia andiana vitsy.

Stephen Wolfram dia mino fa ny automatique finday dia sehatry ny siansa vaovao. Tamin'ny 2002, namoaka boky 1280 pejy izy, A New Kind of Science, izay nilazany fa tsy mitoka-monina ny fandrosoana amin'ny automata finday, fa maharitra ary misy fiantraikany lehibe amin'ny sehatry ny siansa rehetra.

Voaporofo fa ny algorithm rehetra azo tanterahina amin'ny solosaina dia azo ampiharina amin'ny alàlan'ny automatique finday. Ny automata finday dia ampiasaina amin'ny famolavolana tontolo sy rafitra mavitrika, hamahana ny olana algorithmika ary ho an'ny tanjona hafa.

Raha manana sehatra midadasika isika ary mila mirakitra an-tsoratra ny fanjakana mpanelanelana rehetra amin'ny automatique finday, dia misy dikany ny mampiasa globals.

SARITANY

Ny zavatra voalohany tonga ao an-tsaiko rehefa mampiasa ny arrays dia ny fanaovana sarintany.

Amin'ny maha-fitsipika, be dia be ny toerana banga amin'ny sarintany. Raha aseho ho pixel lehibe ny sarintany, dia ho fehezin'ny ranomasina ny 71% amin'ny piksela eto an-tany. Array kely. Ary raha ny asan'ny tanan'olombelona ihany no ampiharinao, dia ho mihoatra ny 95% ny toerana banga.

Mazava ho azy fa tsy misy olona mitahiry sarintany amin'ny endrika raster arrays ampiasaina.
Fa inona ny sarintany vector? Ity dia karazana frame sy polylines ary polygons misy teboka.
Amin'ny ankapobeny dia angon-drakitra misy teboka sy fifandraisana misy eo amin'izy ireo.

Iray amin'ireo iraka fandraisan-tsarintany fatra-paniry laza indrindra ny iraka Gaia Teleskaopy amin'ny sarintany ny vahindanitra misy antsika. Raha lazaina amin'ny teny ara-panoharana, ny vahindanitra misy antsika, toy ny an'izao rehetra izao, dia filaharana tsy mitsaha-mitombo: habaka banga midadasika izay misy teboka kely tsy fahita firy - kintana. Ny habakabaka dia 99,999999…….%. Mba hitahiry ny sarintanin'ny vahindanitra misy antsika dia nisy angon-drakitra manerantany nofidina - Caché.

Tsy fantatro ny firafitry ny globals marina amin'ity tetikasa ity, azoko eritreretina fa mitovy amin'ny:

Set ^galaxy(b, l, d) = 1; Номер звезды по каталогу, если есть
Set ^galaxy(b, l, d, "name") = "Sun"
Set ^galaxy(b, l, d, "type") = "normal" ; варианты blackhole, quazar, red_dwarf и т.д.
Set ^galaxy(b, l, d, "weight") = 14E50
Set ^galaxy(b, l, d, "planetes") = 7
Set ^galaxy(b, l, d, "planetes", 1) = "Mercury"
Set ^galaxy(b, l, d, "planetes", 1, weight) = 1E20
...

Aiza ny b, l, d galactic coordinates latitude, longitude ary lavitra ny Masoandro.

Ny firafitry ny globals mora vidy dia ahafahanao mitahiry ireo toetra ilaina amin'ny kintana sy planeta, satria tsy dia misy drafitra ny fototry ny globals.

Mba hitehirizana ny sarintanin'izao rehetra izao, nofidina i Caché tsy noho ny fahaizany fotsiny, fa noho ny fahaizany mitahiry angon-drakitra haingana dia haingana, sady mamorona index globals ho an'ny fikarohana haingana.

Raha miverina eto an-tany isika, dia noforonina amin'ny tontolon'ny sariitatra ny tetikasa cartographic OpenStreetMap XAPI ary sampanan'ny OpenStreetMap - FOSM.

Vao haingana tamin'ny hackathon Caché Ny mari-pamantarana geospatial dia nampiharina Geospatial. Miandry lahatsoratra avy amin'ny mpanoratra miaraka amin'ny antsipiriany momba ny fampiharana izahay.

Fampiharana fanondroana spatial amin'ny eran-tany ao amin'ny OpenStreetMap XAPI

Sary nalaina tamin'ny ity famelabelarana ity.

Ny tany manontolo dia mizara ho efamira, avy eo ny zana-tsipìka, ary ny zana-tohatra ho efa-joro, sy ny sisa. Amin'ny ankapobeny, mahazo firafitry ny ambaratongam-pitehirizana izay noforonina manerantany.

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

Amin'ny fotoana rehetra dia afaka mangataka avy hatrany ny efamira tiana isika na manadio azy, ary haverina na hofafana ihany koa ny zana-kianja rehetra.

Ny tetika mitovy amin'ny globals dia azo ampiharina amin'ny fomba maro.

Option 1:

Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idПервойТочки
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idВторойТочки
...

Option 2:

Set ^m('abacdabcdabacdabcda', 1) = idПервойТочки
Set ^m('abacdabcdabacdabcda', 2) = idВторойТочки
...

Amin'ireo tranga roa ireo dia tsy sarotra ny mampiasa COS/M mba hangataka teboka hita ao amin'ny efamira misy ambaratonga. Ho mora kokoa ny manadio sombin-tany efamira amin'ny ambaratonga rehetra amin'ny safidy voalohany, saingy tsy dia ilaina loatra izany.

Ohatra iray amin'ny efamira ambany kokoa:

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

Ary ireto misy eran-tany maromaro avy amin'ny tetikasa XAPI: fanehoana ny index on globals:

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

FIFANDRAISAM- ^ fomba ampiasaina hitahiry teboka polylines (lalana, renirano kely, sns) ary polygons (faritra mihidy: tranobe, ala, sns.).

Fanasokajiana henjana amin'ny fampiasana laharan-tsarety amin'ny tontolo.

  1. Isika dia mitahiry ny koordinate amin'ny zavatra sasany sy ny toerany (mapping, automatique cellule)
  2. Mitahiry matrices kely izahay.

Ho an'ny tranga 2) rehefa mangataka fandrindrana manokana izay tsy nomena sanda ny singa, dia tsy maintsy mahazo ny sandan'ny singa array tsy misy dikany isika.

Bonus azonay rehefa mitahiry matrices multidimensional amin'ny globals

Esory haingana sy/na mifidiana sombin-tany izay misy andalana, fiaramanidina, cubes, sns. Ho an'ny tranga izay ampiasaina ny fanondroana integer dia mety ilaina ny fahafahana manaisotra haingana sy/na maka sombin-tany maromaro misy andalana, fiaramanidina, cubes, sns.

ekipa vonoy afaka mamafa singa iray na andalana iray, na fiaramanidina iray manontolo mihitsy aza isika. Noho ny fananan'ny globals, mitranga izany haingana dia haingana - an'arivony heny haingana kokoa noho ny fanesorana singa tsirairay.

Ny sary dia mampiseho laharan-tsarimihetsika telo amin'ny tontolo iray ^a ary karazana famafana samihafa.

Globals dia sabatra harena amin'ny fitahirizana angona. Array kely. Fizarana faha-3

Mba hisafidianana sombin-tany amin'ny alàlan'ny fanondro fantatra dia azonao atao ny mampiasa ny baiko mampiray.

Misafidiana tsanganana matrix ao amin'ny fari-piadidiana Column:

; Зададим трёхмерный разреженный массив 3x3x3
Set ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1
Merge Column = ^a(2,2)
; Выведем переменную Column
Zwrite Column

famaranana:

Column(0)=1
Column(2)=1

Ny mahaliana momba ny fari-piainan'ny Column dia manana array vitsy ihany koa isika, izay tsy maintsy idirana amin'ny alàlan'ny $GET, satria tsy voatahiry ao ny soatoavina default.

Azo atao amin'ny alalan'ny programa kely mampiasa ny asa ihany koa ny fifantenana sombin-tany $Kaomandy. Ity dia mety indrindra amin'ny habaka izay tsy voaisa ny indices (cartography).

famaranana

Ny vanim-potoana amin'izao fotoana izao dia mametraka asa goavana vaovao. Ny sary dia mety ahitana vertices an'arivony tapitrisa, sarintany misy teboka an'arivony tapitrisa, ary ny sasany aza mety te-hitondra ny tontolony manokana amin'ny automata finday (1, 2).

Rehefa tsy afaka miditra amin'ny RAM intsony ny habetsaky ny angon-drakitra avy amin'ny arrays, fa mila miara-miasa amin'izy ireo ianao, dia ilaina ny mandinika ny mety hisian'ny tetikasa mitovy amin'izany amin'ny Globals sy COS.

Misaotra anao noho ny fifantohanao! Miandry ny fanontanianao sy ny fanirianao ao amin'ny fanehoan-kevitra izahay.

Disclaimer: Ity lahatsoratra ity sy ny fanehoan-kevitro momba azy dia hevitro ary tsy misy ifandraisany amin'ny toerana ofisialin'ny InterSystems Corporation.

Source: www.habr.com

Add a comment