From 740d8bc1e02edd4fb08ccc16b73f567254cdeae5 Mon Sep 17 00:00:00 2001 From: Nikolaj Date: Sun, 3 Oct 2021 16:42:25 +0200 Subject: [PATCH] id_query_indexed.c --- A1/id_query_indexed | Bin 0 -> 31456 bytes A1/id_query_indexed.c | 61 ++++++++++++++++++++++++++++++++++++++++++ A1/id_query_naive | Bin 26920 -> 26920 bytes 3 files changed, 61 insertions(+) create mode 100755 A1/id_query_indexed create mode 100644 A1/id_query_indexed.c diff --git a/A1/id_query_indexed b/A1/id_query_indexed new file mode 100755 index 0000000000000000000000000000000000000000..82d7823578e8a138db195f65d1bce0990aff7002 GIT binary patch literal 31456 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 z

ze2sIi1DbT50y@1e{oL&Z2mMF0^p8xz|52jb3WUDDRcoX>%_gg_7xt5Xvj3r^`?-jo{dej4OxIc`ApKi2 znf}YBpx-zJ{ZpV*eY5>}+Z6mmQ_%kx=>7@w(y1SSUWkh_`hH8Dah&MXc^VXjuOA?J zlJ$GVky(l!HU&nQZXy=&rpcduzZUix?9c4W<94)*kG}A5y+sLb zP3Gshpp%~LenNM~P&;Pdenx*zOr~e;6!a}q&?8gOcTYk8Jm}>AY&-7--Jj_K#(uzh zydwLqv*T0f|E0;FeG|d&L7zQ|{`XCOeXU2|P3A@ipm924jyqhBR!68MvIx)4h7s|D zK_J0+r~_-hNF0RLSiCQuz?-C7#l#n4g7NMkzS$BD)B3foC)m-|(-P_mw#9p5eZf#- zC$=Zuy% z>sU>Ob`5>XCQ~t1dYMe@(oDXhXk7g zL8T$E<^~bGYW;Pqn$`!eTf6qg=1sv(O{>;7lUA%(T7#{939ce<02-|yk;z{3WoCZB zmw2)k;k;JK5T=jhWDtU3-khnWbY@Q07kbi}7hAU#)^s1OhVapyG$(x!$NG()jEu8B zwUd=gcBv2Xu-fk4jC}LEJ{h#^?+^vs`g($$p(t%`c>_bA7NS)(+Hs-@sOy+}^bBoT zJLYtU;>{s;8T7TH41r*VC9ij{l{`64>1uT&ag87}I3>xhRG6=ySzQ3fq zD0PQPzqT~7LqUbnGFX!KWVQ`+q_>9|Uq;F(&vFFlJl8bznD8*BisbQyP;^Cc0)1-pD9`5#a;ZAcJ>1>0n#*~Db zPn3jCLvaXm21@OLE}ZJP0HqAgFX}L@(RK;OhFcOHkPAgSFbA4wB--Ai)1j7@Sa^rV z`0G?A7rbXBqff>3JpBI&={X;SUaT3_QI0r3hlb`|Vv2|}@mh~LK=7ApT7H=+uVJH= z8R>NVFzHJHt@1lfc@5`g$?NrqCa=qq*ZU(4{hHB)+43I+9j__w(e)oT%h!~*ZUO>^DSjlGQ0o&gDJ25uh;Dw-kH^5wEwkQdO(L* zw7lMDYIv(=G+}o6&t%EFmMBII(~3>`?DBsOI&S0OF+eQ(`9u9Z&uo5;Yxp8$3M}&a zx&wXVgbvN8unAn#UquG>9dp>H_vQNgtmCHtX#CQl<#ao~1sbtvdHwyoQ&$o<-ov3l z`mE(O{7>Xq<v;2lEx|Yx0Tam4FXjo>-E9%7g*+!Km=3}w<>|}oJ0N^Q$E{&chZG49AC*AaJnoF z=}|#SXUorNV{t*(ajb_%tx%7BE8jtLgFkFeth13>iJ$I2I)1r9(|yM(zokoI=S^Y1 V=A~`@Wb*M|#X)}oT8}JL{2$9~xGewx literal 0 HcmV?d00001 diff --git a/A1/id_query_indexed.c b/A1/id_query_indexed.c new file mode 100644 index 0000000..9028cd2 --- /dev/null +++ b/A1/id_query_indexed.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "record.h" +#include "id_query.h" + +struct index_record { + int64_t osm_id; + const struct record* record; +}; + +struct indexed_data { + struct index_record* irs; + int n; +}; + +struct indexed_data* mk_indexed(struct record* rs, int n) { + struct index_record irs[n]; + for (int i = 0 ; i < n ; i++) { + struct record* rec = &rs[i]; + struct index_record irec = { .osm_id = rec->osm_id, .record = rec }; + irs[i] = irec; + } + struct indexed_data* data = malloc(sizeof(struct indexed_data*)); + data->irs = irs; + data->n = n; + return data; +} + +void free_indexed(struct indexed_data* data) { + struct record* rs = malloc(sizeof(struct record*)); + int n = data->n; + for (int i = 0 ; i < n ; i++) { + struct index_record* irec = &data->irs[i]; + rs[i] = *irec->record; + } + free_records(rs, n); +} + +const struct record* lookup_indexed(struct indexed_data *data, int64_t needle) { + int n = data->n; + for (int i = 0 ; i < n ; i++) { + struct index_record* irec = &data->irs[i]; + if (irec->osm_id == needle) { + return irec->record; + } + } + return NULL; +} + +int main(int argc, char** argv) { + return id_query_loop(argc, argv, + (mk_index_fn)mk_indexed, + (free_index_fn)free_indexed, + (lookup_fn)lookup_indexed); +} diff --git a/A1/id_query_naive b/A1/id_query_naive index 86e67b9fe941ecf19e35d45ef5f505f5041ee091..9c136e6476fdb73280374e515e6595c63b457b56 100755 GIT binary patch delta 41 xcmZ2+iE+gx#tj|JBD_%r4=+Ec=W{f4O$#xd6FHToBW>{