Hi Omar,

Could you talk in a little more detail about your algorithm, including 
space/time complexity?  It sounds interesting, but I am having trouble finding 
the relevant portions in the source code...

Thanks,
Jon

> On Jul 31, 2017, at 1:26 AM, Omar Charif via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> The main advantage I introduce is actually no just a substring search, my 
> main goal is to achieve high performance repeated search on the same given 
> array of strings. I have tested my algorithm against something like spotlight 
> for example searching for files etc … Actually my code is a bit faster on 
> execution in a 1 to 1 single search. But if you go further and try to search 
> for 2, 3, or more substrings in the same array my implementation will be even 
> faster. My implementation is also simple and easy to use, you can simply see 
> how easy and intuitive it is once you try it. I think this is basic String 
> functionality that should already come with Swift Foundation library and it 
> is additive with zero conflicts with Swift Foundation library. One last thing 
> I have to say is that I have been testing this for 5 months so it is not new 
> and I am not experimenting here :)
> 
>  
> 
>> On Jul 30, 2017, at 7:11 PM, Kenny Leung via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> This is a bit off topic, but does anybody know the data structure that 
>> supports Xcode’s fabulous case-insensitive-in-order-yet-disjoint-substring 
>> search?
>> 
>> -Kenny
>> 
>> 
>>> On Jul 28, 2017, at 1:57 PM, Huon Wilson via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> 
>>>> On Jul 28, 2017, at 05:54, Omar Charif via swift-evolution 
>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> I wonder whether there is already a way in Swift to compare a string 
>>>> against a large string array quickly without using the traditional ways of 
>>>> comparison. 
>>>> 
>>>> Say we have ["a", "b", "c", "d"] and we would like to find whether this 
>>>> array contains "a", then we decide to check if we have "b" in that same 
>>>> array. Don't you think there is a way to represent the array in a 
>>>> different way and make this comparison a lot quicker ?
>>>> 
>>>> I know there are recurrent neural networks etc ... I am talking here about 
>>>> solution without learning anything, just representing the array 
>>>> differently so we can minimize that O(N).
>>>> 
>>>> I have developed an algorithm and it is doing pretty well so far and I 
>>>> wonder whether it would be accepted so I came to propose and see if this 
>>>> is interesting from your perspective.
>>>> 
>>>> I developed a Javascript version here 
>>>> https://omarshariffathi.github.io/quickhint/ 
>>>> <https://omarshariffathi.github.io/quickhint/>
>>>> 
>>>> If you think this is welcome in Swift Foundation I am ready for a pull 
>>>> request.
>>>> Thanks for reading.
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> 
>>> If you’re doing only direct containment, the builtin Set will give O(1) 
>>> lookups.
>>> 
>>> If you’re looking for, say, finding all values with a given prefix then a 
>>> trie might be appropriate, and if you’re trying to do more interesting 
>>> things (e.g. fuzzy search) there’s techniques like “finite state 
>>> transducers” http://blog.burntsushi.net/transducers/ 
>>> <http://blog.burntsushi.net/transducers/> . I don’t believe either of these 
>>> have anything built-in, and I suspect they (especially FSTs) are too 
>>> specialized, or have too many possible variations, to be worth including 
>>> directly in the current standard library, and a SwiftPM package would work 
>>> almost as well as others have suggested.
>>> 
>>> Huon
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to