Janilabo Posted June 17, 2013 Share Posted June 17, 2013 Sorts ATIA items by size (array length), contains 2 ways to sort: -Low-to-High -High-to-Low This procedure keeps the subarrays in order, which SortATIABySize doesn't. Source code with test/example: const INDEX_COUNT = 25; SIZE_MIN = 1; // Minimum length for subarrays? SIZE_MAX = 3; // Maximum length for subarrays? var original, sorted: T2DIntArray; procedure ATIASortBySizeEx(var ATIA: T2DIntArray; order: (so_LowToHigh, so_HighToLow)); var h, i, l, r, s, t, p, x: Integer; al: TIntegerArray; tmp: array of T2DIntArray; begin l := Length(ATIA); SetLength(tmp, l); if (l > 0) then begin SetLength(al, l); for i := 0 to (l - 1) do al[i] := -1; for i := 0 to (l - 1) do if not TIAContains(al, Length(ATIA[i])) then begin al[r] := Length(ATIA[i]); Inc(r); end; SetLength(al, r); SortTIA(al); if (order = so_HighToLow) then ReverseTIA(al); SetLength(tmp, r); case order of so_LowToHigh: for i := 0 to (l - 1) do begin x := Length(ATIA[i]); p := TIAPos(al, x); for t := 0 to (Length(tmp[p]) - 1) do begin for s := 0 to (x - 1) do if (tmp[p][t][s] < ATIA[i][s]) then s := x else if (tmp[p][t][s] > ATIA[i][s]) then Break; if (s < x) then Break; end; SetLength(tmp[p], (Length(tmp[p]) + 1)); for s := (Length(tmp[p]) - 2) downto t do Swap(tmp[p][s], tmp[p][(s + 1)]); x := Length(ATIA[i]); SetLength(tmp[p][t], x); for s := 0 to (x - 1) do tmp[p][t][s] := Integer(ATIA[i][s]); end; so_HighToLow: for i := 0 to (l - 1) do begin x := Length(ATIA[i]); p := TIAPos(al, x); for t := 0 to (Length(tmp[p]) - 1) do begin for s := 0 to (x - 1) do if (tmp[p][t][s] > ATIA[i][s]) then s := x else if (tmp[p][t][s] < ATIA[i][s]) then Break; if (s < x) then Break; end; SetLength(tmp[p], (Length(tmp[p]) + 1)); for s := (Length(tmp[p]) - 2) downto t do Swap(tmp[p][s], tmp[p][(s + 1)]); x := Length(ATIA[i]); SetLength(tmp[p][t], x); for s := 0 to (x - 1) do tmp[p][t][s] := Integer(ATIA[i][s]); end; end; SetLength(al, 0); r := 0; h := High(tmp); for i := 0 to h do IncEx(r, (High(tmp[i]) + 1)); SetLength(ATIA, r); r := 0; for i := 0 to h do begin p := High(tmp[i]); for s := 0 to p do begin SetLength(ATIA[r], Length(tmp[i][s])); for t := 0 to High(tmp[i][s]) do ATIA[r][t] := Integer(tmp[i][s][t]); Inc(r); end; end; SetLength(tmp, 0); end; end; {==============================================================================] Explanation: Returns copy ("clone") of ATIA safely [==============================================================================} function ATIAClone(ATIA: T2DIntArray): T2DIntArray; var i, l, x, y: Integer; begin l := Length(ATIA); SetLength(Result, l); for i := 0 to (l - 1) do begin y := Length(ATIA[i]); SetLength(Result[i], y); for x := 0 to (y - 1) do Result[i][x] := Integer(ATIA[i][x]); end; end; var h, i, t: Integer; tmp: string; begin ClearDebug; case ((SIZE_MIN > SIZE_MAX) or (SIZE_MIN < 1) or (INDEX_COUNT < 1)) of False: begin SetLength(original, INDEX_COUNT); tmp := ('Original:' + #13#10); for i := 0 to (INDEX_COUNT - 1) do begin SetLength(original[i], RandomRange(SIZE_MIN, (SIZE_MAX + 1))); for h := 0 to (Length(original[i]) - 1) do original[i][h] := Random(10); end; h := High(original); for i := 0 to h do tmp := (tmp + '[' + TIAToStr(original[i]) + ']'); tmp := (tmp + #13#10 + 'ATIASortBySizeEx() [so_LowToHigh]: ' + #13#10); sorted := ATIAClone(original); t := GetSystemTime; ATIASortBySizeEx(sorted, so_LowToHigh); WriteLn('ATIASortBySizeEx [so_LowToHigh]: ' + IntToStr(GetSystemTime - t) + ' ms.'); h := High(sorted); for i := 0 to h do tmp := (tmp + '[' + TIAToStr(sorted[i]) + ']'); tmp := (tmp + #13#10 + 'ATIASortBySizeEx() [so_HighToLow]:' + #13#10); SetLength(sorted, 0); sorted := ATIAClone(original); t := GetSystemTime; ATIASortBySizeEx(sorted, so_HighToLow); WriteLn('ATIASortBySizeEx [so_HighToLow]: ' + IntToStr(GetSystemTime - t) + ' ms.'); h := High(sorted); for i := 0 to h do tmp := (tmp + '[' + TIAToStr(sorted[i]) + ']'); tmp := (tmp + #13#10 + 'SortATIABySize():' + #13#10); SetLength(sorted, 0); sorted := ATIAClone(original); t := GetSystemTime; SortATIABySize(sorted); h := High(sorted); for i := 0 to h do tmp := (tmp + '[' + TIAToStr(sorted[i]) + ']'); WriteLn('SortATIABySize: ' + IntToStr(GetSystemTime - t) + ' ms.'); SetLength(sorted, 0); WriteLn(''); WriteLn(tmp); tmp := ''; SetLength(original, 0); end; True: WriteLn('Setup constants correctly, please... TERMINATING!'); end; end. Which outputs something like this to debug box (the arrays are randomized) - with this you can easily see/notice the difference in comparison to SCAR's SortATIABySize(): ATIASortBySizeEx [so_LowToHigh]: 0 ms. ATIASortBySizeEx [so_HighToLow]: 0 ms. SortATIABySize: 0 ms. Original: [6,6,5][5,1][0,8][8,7][0][7,5][1,9,7][7,2,5][4,9][1,2][8][8,6][8][5,6,9][3][5,0][4,1,7][7][9,8][3,6,7][6,7,4][3,4,7][5,9,9][8,8,1][3] ATIASortBySizeEx() [so_LowToHigh]: [0][3][3][7][8][8][0,8][1,2][4,9][5,0][5,1][7,5][8,6][8,7][9,8][1,9,7][3,4,7][3,6,7][4,1,7][5,6,9][5,9,9][6,6,5][6,7,4][7,2,5][8,8,1] ATIASortBySizeEx() [so_HighToLow]: [8,8,1][7,2,5][6,7,4][6,6,5][5,9,9][5,6,9][4,1,7][3,6,7][3,4,7][1,9,7][9,8][8,7][8,6][7,5][5,1][5,0][4,9][1,2][0,8][8][8][7][3][3][0] SortATIABySize(): [3][0][8][3][8][7][1,2][5,1][0,8][7,5][4,9][5,0][8,6][9,8][8,7][6,6,5][5,6,9][4,1,7][7,2,5][3,6,7][6,7,4][1,9,7][5,9,9][8,8,1][3,4,7] Successfully executed (37.75 ms) Quote Link to comment Share on other sites More sharing options...
LordJashin Posted June 17, 2013 Share Posted June 17, 2013 Very nice! Good work Jani! Quote Link to comment Share on other sites More sharing options...
Janilabo Posted June 17, 2013 Author Share Posted June 17, 2013 Very nice! Good work Jani!Thanks LJ. Quote Link to comment Share on other sites More sharing options...
slacky Posted June 17, 2013 Share Posted June 17, 2013 (edited) Good job, Jani It's nice to be able to sort by the length, don't see why SCAR does not have this feature. Edited June 17, 2013 by slacky Quote Link to comment Share on other sites More sharing options...
Janilabo Posted June 18, 2013 Author Share Posted June 18, 2013 Good job, Jani It's nice to be able to sort by the length, don't see why SCAR does not have this feature.Thanks, Slacky. By the way, I would love to see you write some badass array-related algorithms for SCAR! Quote Link to comment Share on other sites More sharing options...
slacky Posted June 18, 2013 Share Posted June 18, 2013 (edited) Care to elaborate? It would seem that you got the most useful array-related functions covered. Only thing I miss, is a fast dictionary/map like implementation, which is quite complicated to do in Delphi. Edited June 18, 2013 by slacky Quote Link to comment Share on other sites More sharing options...
Janilabo Posted June 18, 2013 Author Share Posted June 18, 2013 Care to elaborate? It would seem that you got the most useful array-related functions covered.Only thing I miss, is a fast dictionary/map like implementation, which is quite complicated to do in Delphi. Well mate, I am sure there's still plenty of functions/procedures that I haven't got covered OR even thought of...and I mean a lot of em... There's just so many ways how you can play around with arrays! But also, I do enjoy seeing other people write some big functions with smart algorithms. There is not nearly enough stuff posted to here @Code Bin - whereas, for example, at SRL Forums there's several people posting some cool snippets and commands to SRL Snippets section. Would love to see a little more activity around these boards over here at SCAR forums.. Although, the main reason could/might be that most of us are currently dropping those snippets/commands to the include files, so thats why it doesn't really show up around these sections really. My mind is a little bit too abstract in a way - this can be easily noticed/seen (especially) with the development cycles of MSSL. Quite often, the ideas that I get, just keep coming up from absolutely nowhere! Quote Link to comment Share on other sites More sharing options...
slacky Posted June 19, 2013 Share Posted June 19, 2013 True that, I will keep it in mind! But I have not been very productive, nor creative lately, and I believe it will continue for a lil' while.. I believe the correct term for this is burned-out (at least in my case) Quote Link to comment Share on other sites More sharing options...
LordJashin Posted June 19, 2013 Share Posted June 19, 2013 Yeah it takes time, and thought to be creative. And sweat and tears or just bordom Quote Link to comment Share on other sites More sharing options...
Janilabo Posted June 19, 2013 Author Share Posted June 19, 2013 True that, I will keep it in mind! But I have not been very productive, nor creative lately, and I believe it will continue for a lil' while.. I believe the correct term for this is burned-out (at least in my case) Yeah, I know what you mean mate, I have every now and then those "dark" days, weeks or EVEN months sometimes... Man, I really hate em! :\Sure hope yours wont last too long. Quote Link to comment Share on other sites More sharing options...
AnthonyPhics Posted April 10 Share Posted April 10 オンライン カジノは、プレイヤーが自宅にいながらにしてポーカー、ルーレット、ブラックジャック、スロットなどのギャンブル ゲームを楽しむ機会を提供する仮想プラットフォームです。 オンラインカジノは、アクセスのしやすさ、ゲームの種類の多さ、そして大金を獲得する機会があるため、年々人気が高まっています。 オンラインカジノの主な利点は、利便性とアクセスしやすさです。 プレイヤーは、通常のカジノの営業時間に制限されず、いつでもゲームを楽しむことができます。 必要なのは、インターネットにアクセスできるデバイスと、カジノのウェブサイトにアクセスできることだけです。 これにより、プレイヤーは従来のカジノによくありがちなストレスや緊張を感じることなく、快適な環境でプレイすることができます。 オンラインカジノのもう1つの利点は、ゲームの選択肢が豊富なことです。 ユーザーは、それぞれ独自のルールと勝利の機会を提供する何百もの異なるゲームから選択できます。 技術革新のおかげで、オンライン ゲームのグラフィックとサウンドは高品質になり、プレイヤーは興奮と情熱の雰囲気に浸ることができます。 さまざまなゲームに加えて、オンライン カジノはプレーヤーにさまざまなボーナスやプロモーションも提供します。 これらは、スロットのフリースピン、プレイのための追加のお金、または貴重な賞品が得られる特別なトーナメントなどです。 このようなボーナスにより、勝利の可能性が高まり、ゲームがさらに楽しくなります。 もちろん、オンラインカジノでのプレイにはリスクがあります。 ギャンブルには依存性がある可能性があるため、自分の感情を監視し、支出をコントロールすることが重要であることを覚えておくことが重要です。 カジノはまた、責任あるゲーミングをサポートし、自己排除や賭け金制限の機会を提供します オンラインカジノ 全体として、オンライン カジノはギャンブル愛好家にとって便利でエキサイティングなエンターテイメントを提供します。 幅広いゲーム、ボーナスの選択肢があり、いつでもプレイできるため、世界中のプレイヤーの間で人気が高まっています。 ただし、責任あるゲームと、ゲームが単なる楽しみと娯楽の源であるように自分の行動を制御する能力について覚えておくことが重要です。 Quote Link to comment Share on other sites More sharing options...
TerryKig Posted July 23 Share Posted July 23 free pГk how to use keyboard on steam deck crypto exchange list how to buy bitcoin and send to another wallet can i buy iphone with bitcoin arb token price bioscurrency buye instant bitcoin can you buy a fraction of a bitcoin on coinbase 6 mlion bitcoin crypto news network decentralized crypto wallets helium mobile crypto price prediction 29 year old crypto billionaire dead precio bitcoin tiempo real bitcoin buy sell australia basel committee crypto buy bitcoin localcoin overdraft wells fargo can i buy bitcoin on td ameritrade tool crypto.com best apps for buying crypto crypto price analysis 2025 crypto price predictions 5e-8 bitcoin buy did number bitcoin best free crypto trading bot for beginners bepro crypto price skry $meme token utility token crypto 5.5 bitcoin to usd buy bitcoin using sim card agentina bitcoin how to buy bitcoin uk pendle crypto price prediction kaspa market cap acheter bitcoin cash carte de dГ©bit amp crypto ticker best countries for crypto investors african crypto revolution buy leads with bitcoin 23 year old canadian crypto king wally crypto crypto forex trading platform da vinci load what does the word precipitated mean in the following sentence 50 cent 700 bitcoin is zeus network free celsius crypto distribution ian balina Quote Link to comment Share on other sites More sharing options...
MichaelCax Posted October 7 Share Posted October 7 Are you a music enthusiast looking to elevate your sound? Look no further! Our music gear store has everything you need to bring your musical dreams to life. From high-quality guitars to powerful amplifiers and all the accessories in between, we've got you covered. Guitars for Every Taste and Style Whether you're an acoustic aficionado or an electric guitar wizard, our store offers a diverse range of guitars to suit every player. We carry top brands like Fender, Gibson, Ibanez, and more. Each guitar is meticulously crafted to deliver exceptional sound and playability. - Acoustic Guitars: Perfect for singer-songwriters and those who love the raw, unplugged sound. - Electric Guitars: Ideal for rock, blues, and jazz enthusiasts looking to add some flair to their performances. - Bass Guitars: Providing the deep, resonant tones crucial for any band’s rhythm section. Amplifiers That Elevate Your Sound A great guitar deserves an equally great amplifier. Our collection features a variety of amps that cater to different genres and playing environments. From practice amps to stage-ready powerhouses, you'll find the perfect match for your needs. - Tube Amps: Known for their warm and rich tones, perfect for achieving that classic rock sound. - Solid State Amps: Reliable and versatile, they offer a consistent performance ideal for any gig. - Modeling Amps: Advanced technology that mimics the sound of various amp types, giving you a wide range of tones from a single unit. Essential Accessories No musician's arsenal is complete without the right accessories. We stock everything from strings and picks to pedalboards and effects pedals. Our knowledgeable staff can help you find exactly what you need to enhance your playing experience. - Strings and Picks: High-quality materials for durability and superior sound. - Effects Pedals: From distortion to delay, our pedals can help you craft the perfect tone Digital Mixer Expansion Cards - Pedalboards: Keep your effects organized and ready to use during performances. Why Shop With Us? - Expert Advice: Our team of musicians is passionate about helping you find the right gear to achieve your goals. - Quality Guarantee: We only stock products from trusted brands known for their reliability and superior craftsmanship. - Customer Satisfaction: Your happiness is our top priority. We offer hassle-free returns and excellent customer service. Visit our store today and experience the difference quality music gear can make. Elevate your sound and take your music to the next level. Whether you’re a beginner or a seasoned pro, we have the right equipment to help you shine. Quote Link to comment Share on other sites More sharing options...
MatthewHom Posted Friday at 08:49 AM Share Posted Friday at 08:49 AM Выбор трактора Шифенг: на что направить внимание Тракторы марки Шифенг захватили популярность на земельном базаре из-за своей надежности, многофункциональности и доступной цене. Однако, чтоб выбрать подходящую модель, необходимо учесть несколько ключевых причин. В данном посте будут рассмотрены, на что направить внимание при выборе трактора Шифенг в зависимости от ваших потребностей и критерий эксплуатации. 1. Обусловьте цели использования До этого всего, необходимо определить, для какой-никаких задач намереваетесь использовать трактор. Основные направления применения тракторов Шифенг включают: - Сельскохозяйственное производс: обработка почвы, посадка, сбор урожая, перевозка. - Строительство:, подъем и транспортировка строительных материалов. - Лесозаготовка: вывоз древесины, уборка на делянках. Каждое направление может требовать разной мощности, производительности и дополнительных функций, по этой причине главно чётко понять свои цели. 2. Выбор мощности и типа мотора Тракторы Шифенг представлены в спектре мощностей, от легких моделей для маленьких хозяйств и заканчивая массивными машинами для крупных агроформирований. Важно принять во внимание следующие моменты: - Мощность мотора: от этого параметра зависит способность трактора делать разные виды работ. Более массивные машины то что надо для тяжелых условий эксплуатации. - Тип двигателя: дизельные двигатели почаще используются в тракторов из-за их экономичности и долговечности, но и бензиновые модели могут иметь свои преимущества. 3. Конструкция и качество В момент выбора трактора важно обратить внимание на его конструкцию и качество материалов. Тракторы Шифенг нередко делают из прочных сплавов, что увеличивает их долговечность. Также проверьте: - Тип трансмиссии: механическая или гидростатическая, каждая из которых имеет свои плюсы и минусы. - Подвеска: наличие фронтальной и задней подвески помогает улучшить устойчивость и маневренность. 4. Комплектация и дополнительные опции Дополнительные функции могут существенно повлиять на комфорт и функциональность работы с трактором. При рассмотрении модели обратите внимание на: - Наличие фар и освещения для работы в черное время суток. - Кабина: отлично утепленная и снаряженная системами вентиляции и кондиционирования веско повысит комфорт оператора. - Дополнительное оборудование: возможность установки различной подвесного или прицепного оборудования (плуг, культиватор, фреза и т.д.). 5. Сервис и гарантия Важно учитывать доступность сервисного обслуживания и наличие запчастей. Выучите: - Гарантийные условия: они могут варьироваться в зависимости от производителя. - Квалификация сервисного центра: его способности по ремонту и обслуживанию тракторов. 6. Бюджет Не забывайте о http://ms06.jp/?page_id=2&unapproved=200410&moderation-hash=d62bf549eb393b51255062535d2e8315#comment-200410 вашем бюджете. Тракторы Шифенг предлагают широкий ценовой диапазон, но также принципиально учесть расходы на эксплуатацию, обслуживание и возможные ремонты в будущем. Сравните различные модели и изберите ту вот, которая лучшим образом соответствует вашим финансовым возможностям. Заключение Выбор трактора Шифенг это ответственный процесс, который находится в зависимости от большого колличества факторов. Определите цели его использования, учитывайте мощность и тип двигателя, качество конструкции, дополнительные опции, доступность сервиса и Свой бюджет. Правильно подобранный трактор станет надёжным ассистентом в вашем хозяйстве, обеспечивая эффективность и продуктивность работы надолго. Не торопитесь с покупкой, превосходнее заранее соберите всю нужную информацию и проконсультируйтесь с профессионалами, чтобы сделать обоснованный выбор. Quote Link to comment Share on other sites More sharing options...