recursal/Fanatic-Fandom huggingface dataset:
2AM

* Official Music Video
* Lyric video
* Matoma remix

**2AM** is a single by Astrid S, first released on Universal Music Norway on October 17, 2014. A remix of the song was released on the following year by Norwegian DJ and record producer, Matoma.

## Lyrics

Cold, running through my body

Nothing ever felt so right

I could get lost, you're all that I want

I need you here, by my side

You're running through my body

I feel it inside my bones

Don't know what's happenin'

You got me trippin', I don't wanna be alone

Tonight, you're out of sight, oh

So where you at, where you at? Yeah

World slows down, I've lost my ground, oh

So, where you at, where you at?

Two in the morning, I can't control it

Lost in the moment, I just can't get no sleep, eh

Two in the morning, everything's frozen

I keep on falling and I just can't get no sleep

Cold, the sky's getting cloudy

My eyes start raining

Makin' a river as it grows bigger

It's pulling me away downstream

Now the water is risin', my head's going under

Drowning my thoughts, turning 'em off

And I just wonder

Where you at? Please take me back, oh

It's killing me (killing me)

It's killing me (killing me)

World slows down, I've lost my ground, oh

It's killing me, killing me

Two in the morning, I can't control it

Lost in the moment, I just can't get no sleep, eh

Two in the morning, everything's frozen

I keep on falling and I just can't get no sleep (no sleep)

Two in the, two in the, two in the morning

Two in the, two in the morning

Insomnia, insomnia, insomnia, insomnia

I can't get no sleep

Insomnia, insomnia, insomnia, insomnia

I can't get no sleep (no sleep)

Two in the morning, I can't control it

Lost in the moment, I just can't get no sleep

Two in the morning, everything's frozen

I keep on falling and I just can't get no sleep

Two in the morning, I can't control it

Lost in the moment, I just can't get no sleep, eh

Two in the morning, everything's frozen

I keep on falling and I just can't get no sleep

Two in the, two in the, two in the morning

Two in the, two in the, two in the, two in the

Two in the, two in the, two in the, two in the

Two in the, two in the, two in the, two in the
Favorite Quotes

### Narrator

"The first thing Martin always did when he found some new data file was to search for his own name. It may seem egocentric but Martin wasn't worried about that. He had spent a lot of time thinking about himself and come to the conclusion that he was definitely NOT self absorbed."

"He sailed through work like the Flying Dutchman. The ship was moving, but no one was at the helm."
Citizens of Beetlewood

## Adults

* Brian Lillabon; Mayor of Beetlewood
* Bridgette & Bennett McShepherd; a young couple who judge all of Beetlewood’s competitions
* Freddi Bender; local weatherman
* Jack Lionheart; owner of Lionheart Pizzeria
* Laura Lionheart; stay at home mother
* Mrs. Von Eggwitz; seamstress, formerly a travel journalist
* Robert Ibbson; works at an office for an unknown job
* Jan Ibbson; founder of the Croquet & Crochet Club
* Tuyen Petrovic; former Vietnamese pop sensation
* Lorence Petrovic; music producer
* Xantheus & Gertrude Alborough; owners of *Alborough Music Store*
* Jenna Pox; owner of *¡FAB!*, (a boutique)
* Eglantine Kim; owner of *Jack + Jill’s, (a* children’s bookstore)
* Isaiah Tucker; worker at *Jack + Jill’s*
* McKayla Lamb; manager of *DELIcious, (*a deli)
* Finian Marquee; professional artist
* Daisy Westport; owner of *Houndstooth Fabrics*, (a fabric store)
* Sandra Scott; school bus driver
* Frieda Dexerton; principal of Beetlewood High School
* Karyn Bedford; counselor at Beetlewood High School
* Mike Fraudleigh: counselor at Beetlewood High School

## Students at Beetlewood High School

* Consuelo Alvarez
* Chaz Belmont
* Magdala Bender
* Orlando Bender
* Mavreen Bradenburg
* Beth Lee Brown
* Fortuna Canyon
* Timothy Chen
* London Cooper
* Dublin Cooper
* Berlin Cooper
* Pauline Costa
* Ricardo Cruz
* Rachel Dolittle
* Jørgine Eriksson
* Daphne Etheldred
* Suzan Faulkner
* Nora Fitzgerald
* George Garcia
* Rosa Hammer
* Mercedes Hendryx
* Irwin Ibbson
* Alice Itzhak
* Jonah Jowoski
* Sakura Kamachi
* Kokomo Kapoor
* Marsha Lionheart
* Martha Lionheart
* Rita Manchester
* Stellanard Marquee
* Damon McGraw
* Rachel Mercury
* Beckham Merritt
* Isaac Nickle
* Hayden O'Reilly
* Elizabeth Oberhausen
* Aubrey Omar
* David Patinkin
* Sarafina Peterson
* Peru Petrovic
* Trevor Quintana
* Florence Rialto
* Vincent Rimsky-Korsakov
* Kate Roosevelt
* Isabeau Salmon
* Markus Swiss
* Lyle Timberton
* Alma Tyndall
* Jackson Walker
* Lia Maria Webler Toltec
* Miriam Wharf
* Winona Young
Glaz

1987.7.2

提摩．格拉茨科夫 (Timur Glazkov) 。代號為「Glaz」

是Spetsnaz在「彩虹六號：圍攻行動」的小隊攻堅者。最大特色就是他能使用 HDS 可調整式瞄準具，在一定距離外提供精準射擊。

\*Glaz 在俄語中的意思為「眼睛」

## 角色側寫

格拉茨科夫在海參崴出生成長，他父親是從事當地的造船工業。中學時主修藝術，直到2004年的震驚全國的貝斯蘭校園人質事件令他投筆從戎，成為軍校生以軍人為志業。再被指派進入部隊之前，他進入哈巴羅夫斯克(Khabarovsk，中譯為「伯力」)軍官訓練學校受訓。並在隨後服役於聯邦第45特戰旅。參與了2008年的南奧塞提亞戰役與喬治亞作戰。

### 心理特質

他並不是成長在大型團體中，但格拉茨在一對一的交談與互動中十分令人印象深刻。他十分具有耐性與沉穩特質。他的藝術背景使他具有好奇心以及對細節的敏銳度，這令他成為一個出色的觀測者與狙擊手。與生硬冷酷的軍旅生涯對比強烈的是他的藝術作品，格拉茨喜歡用具有張力與色彩的構圖。也許這算是一點點心理上的補償作用。

## 可用裝備

 次要武器
 工具
 特殊工具

### HDS 可調整式瞄準具

由俄國特種部隊開發的HDS 可調整式瞄準具能適應各種戰術情況。提供狙擊手自由調整射程的空間。

圖集
--
Shattered

* Live at the Idol - Jakten på en superstjerne
* Lyric Video

**Shattered** is a single by Astrid S, released on April 19, 2013 at the Idol - Jakten på en superstjerne, the Norwegian version of Pop Idol. It was such a hit that it received a gold certification in the Norwegian branch of the international federation of the phonographic industry (IFPI). The song also peaked at number 4 on the Norwegian charts.

## Lyrics

Have you ever felt broken

Or have you ever got so far away

From what you were?

Though my words unspoken

Deep inside my heart I saw a change

I'm done with you (yah)

Didn't want me to be myself

Until I broke off this shell

Now it's shattered like your heart on the floor

I'm sorry I can't give anymore

You acted so sincere

But you wanted me to fail

Now it's shattered, shattered, shattered

Picking up the pieces

I can see the cuts upon your hands

And it's all too much

You make it all dramatic

Not everything I do is about you

You won't grow up

Didn't want me to be myself

Until I broke off this shell

Now it's shattered like your heart on the floor

I'm sorry I can't give anymore

You acted so sincere

But you wanted me to fail

Now it's shattered, shattered, shattered

Shattered, shattered, shattered

Even if we glued it back together

We'd always see the cracks forever

Even if you said you'd leave me never

We'd always see the cracks forever

It's better when it's

Shattered like your heart on the floor

I'm sorry I can't give anymore

You acted so sincere

But you wanted me to fail

Shattered like your heart on the floor

I'm sorry I can't give anymore

You acted so sincere

But you wanted me to fail

Now it's shattered, shattered, shattered

It's shattered, shattered, shattered

And I don't care.
Tio de Yoonbum

###### Abusador, violador

El tío de Yoon Bum, el antagonista secundario de los manhwa. El tío paterno de Yoon Bum es muy abusivo con él. Constantemente golpeaba, pasaba hambre y violaba a Bum. Él se enoja con Bum debido a que la madre de Bum lo dejó por su hermano, se casó y lo tuvo juntos. Él piensa que los padres de Bum merecían morir y que Bum es el resultado de sus "pecados".

## Apariencia

Es un hombre con sobrepeso y cabello canoso.

## Personalidad

Es un hombre egoísta y cruel. Carece de empatía humana básica y trata a su familia como basura en lugar de codiciar a las mujeres. Abusó severamente de Yoon Bum sexual, física y emocionalmente, pero también de su propia Madre, aunque en menor medida.

En el presente, parece ser vengativo y casi obsesionado con querer que Bum lo devuelva a su casa. Esto es para continuar su abuso y / o asegurar su silencio. El tío de Bum y Sangwoo muestran muchas similitudes, ya que abusaron y violaron a Bum, y también usaron a Bum como reemplazo de una mujer.
Helga von Eggwitz

Helga's logo

Helga von Eggwitz is a chicken who lives in Beetlewood, Utah. Helga has a large, everchanging amount of interests and takes her odd perspective of life a little too seriously. She can be quite the diva. Some of her hobbies include: playing with kids meal toys, filming low quality videos about a wide range of subjects and critiquing her friends. When Helga was 10 years old, she started the Beetlewood Only Child Club. Eight years later Helga met Stellanard Marquee, another only child who joined the club. The two quickly became friends, mostly due to Helga forcing a friendship between them. In 2014 Irwin Ibbson, another only child, moved to Beetlewood and requested to join the club. Helga let him, but eventually a rivalry between the two sparked.
Gary

From the cover of An Unwelcome Quest

Gary is a painter from Minneapolis in the year 1992. Gary arrived sometime after Phillip and Jimmy. He was trained by Phillip and in turn trained Tyler and Jeff when they arrived. His paintings resemble heavy metal album covers. His medieval England home, Skull Gullet Cave, is a common meeting place for the Wizards of medieval England. The top of his staff is decorated by 4 KISS dolls.
Yang Seungbae

* **Yang Seungbae** actúa como el tritagonista de Killing Stalking y enemigo de Oh Sangwoo, sospechando que Yoon Bum es una de sus víctimas.

## Personalidad

Como lo citó su superior, el oficial Park, parece que se entromete demasiado en las investigaciones. Obediente y propenso al escepticismo, tiene predisposición a la duda y, a menudo, duda de cualquier cosa que se le presente. Estos rasgos resultaron ser perjudiciales ya que le costaron su puesto en el equipo de investigación. Aunque relegado a las tareas domésticas de un oficial de patrulla, conserva estas características cuando se enfrenta a un posible intruso en la casa. También hace una pausa cuando Park lo regaña por mencionar la posibilidad de que Sangwoo mate a sus propios padres, mostrando que es muy sensible o simplemente no solía ser regañado.

Después de ser degradado, lentamente se está volviendo loco. Con frecuencia tiene arrebatos de agresión e histeria y también alucina con Sangwoo. Esta obsesión por atrapar a Sangwoo lo llevó a soñar con asesinar al asesino de su padre.

Después de escuchar sobre el oficial Park, la muerte de su figura paterna, Seungbae se llenó de ira y estaba seguro de que Sangwoo estaba detrás de eso mientras comenzaba a recuperarse lentamente hasta que finalmente puso fin a los crímenes de Sangwoo cuando causó su arresto y liberó a Yoon Bum de él mientras también recuperando su trabajo.

## Trasfondo

Su MI TIO SAMYYYYYYre lo dejaba en casa todo el día mientras trabajaba. Pero su padre temía que algo pudiera pasar si Seungbae se aventuraba a salir de la casa solo, por lo que cerraría la puerta de entrada desde afuera con un candado para asegurarse de que Seungbae no pudiera irse. Esta crianza le permitió a Seungbae no poner mucho valor en la familia.

## Curiosidades

* Si bien se ha dicho que Yoon Bum tiene finales de los 20 y Sangwoo mediados de los 20, el autor nunca mencionó la edad de Seungbae. Teniendo en cuenta que ya era oficial de policía hace 5-6 años, lo más probable es que sea mayor que Sangwoo y un poco más joven que Yoon Bum, o un poco mayor que Yoon Bum.
Oh Sangwoo

Asesino en serie

## Sangwoo

**Sangwoo** **(오상우)** es el Antagonista Principal de **Killing Stalking**.

## Apariencia

**Sangwoo** se ve frecuentemente en compañía de admiradoras. Adopta una expresión "feliz y enérgica" y se muestra a menudo sonriendo, incluso cuando hace contacto visual con extraños en un entorno social.

Tiene una estructura muscular, pero delgada de sus días en el ejército. Su pelo es de un tono claro de marrón con un corte negro. También tiene ojeras visibles bajo sus ojos.

Durante su tiempo en la universidad, decidió ser una persona extrovertida con un gran círculo de amigos. Según **Bum**, atrajo a muchos con su "aura simpática, considerada y suave".

Sin embargo, estos rasgos enmascaran sus características más psicópatas y sádicas. Sus emociones, frente a sus víctimas, alternan impredeciblemente entre la misericordia y la hostilidad violenta. Cuando habla con conocidos, se burla de ellos en un tono alegre. Alrededor de sus víctimas, utiliza improperios humillantes reprendiéndolos con insultos.

## Historia

En sus días de escuela, **Sangwoo** era un joven muy popular y amable que siempre se mostró rodeado por amor y adoración. Con el paso del tiempo, es reclutado en el ejército junto con **Yoon Bum**. Dentro del ejército, sin saberlo, salvó a **Yoon Bum**, lo que hace que él le respete y desarrolle poco a poco una obsesión por él. Por desgracia resulta ser un psicópata que atrae a la gente en su casa y luego los tortura. De niño fue acosado por su padre al cual posteriormente asesinó.
C1

## L2A1

數據
--

## 實槍外觀

史特林衝鋒槍的實槍

此槍在「虹彩六號：圍攻行動」中以C1之形象登場 。為加拿大第二聯合特遣隊(JTF-2)使用。

簡介
--

C1是由英國的史特林軍備公司（Sterling Armament Company）所開發完成的一種現代衝鋒槍。

大戰結束後，史特林軍備公司仍然持續對派屈特衝鋒槍進行改良與發展，並且在1945年到1952年之間所舉辦的英國軍用新型衝鋒槍測試中，推出了最新完成的產品。

到了1953年8月，英國軍方採用了派屈特衝鋒槍來作為制式武器，並且給予了它「L2A1」的制式名稱。一般來說，英國軍方習慣將L2A1稱之為史特林衝鋒槍。L2A1具有簡單的結構，是屬於反衝式設計，在圓管形的槍機容納部內部，藏有一個大且重的槍機，而且在槍機後方附有強力的複進彈簧。

握柄上附有一個選擇鈕，可以進行全自動與半自動射擊模式的切換。形狀特殊的折疊式槍托，可以說是一種很獨特的設計，在槍機方面也是下了不少工夫，槍機的外圍刻有橫溝，利用射擊時槍機前後移動所產生的氣流從橫溝流出，便可將附著在槍機表面及槍機容納部內部的砂柆或灰塵吹走。此外，在圓管形槍機容納部的前半部有許多小孔，這是為了要增加散熱能力而設計的，而且在護木前端的下方，可以裝配上刺刀。

至今因為其穩定的特性受到許多特戰單位的喜愛而持續使用

-〈本節刪改自維基百科條目〉
Killing Stalking

Matando , Acosando

**Killing Stalking** (キリング・ストーキング, 킬링 스토킹, *Matando, Acosando*) es un manhwa escrito e ilustrado por Koogi el cual se comenzó a publicar el 23 de noviembre de 2016. Actualmente solo está siendo publicado en Lezhin. Ha ganado el premio "Grand Prize Winner" en el segundo evento de Lezhin Comics World Comic.

## Sinopsis

La historia sigue a Yoon Bum, un joven enfermo mental con un pasado difícil. Después de enamorarse de Oh Sangwoo, un compañero de su tiempo en el ejército que lo salvó de un intento de violación, decide entrar a la casa de Sangwoo mientras está fuera de su casa. Yoon Bum encuentra a una mujer atada y magullada en el sótano y mientras intenta liberarla, Sangwoo lo descubre, quien se revela como un asesino en serie. Sangwoo rompe los tobillos de Bum y, a pesar del amor previo de Bum por él, Sangwoo pone a Bum en una relación muy abusiva y manipuladora hasta el final.

## Enlaces Externos

* Sitio web oficial de Killing Stalking *(en coreano)*
Todd

Artwork by RetroOutro

Prior to discovering the file, Todd worked at a video game store.  After finding the file, he killed his boss after having an argument with him the previous day.  Todd caused all the atoms in his boss’s body to lose their cohesion.  When the police began to suspect Todd, he ran into a bathroom and time traveled to Medieval England.

When Todd arrived in Leadchurch, he found there were other time travelers posing as wizards.  However, when he became an apprentice to the wizard Gary, he failed his training when he showed signs of aggressive and unstable behavior.  The other wizards voted to send him back to his own time, hog-tied, with no access to the file and a permanent magnetic field to disrupt all electronics.

Upon Todd’s return to his own time, he was promptly arrested for the murder of his boss and placed into solitary confinement at a maximum security prison in Florida called *The Facility.*  After seven years, he was visited by a US Treasury agent named Murphy.  He delivered a letter on behalf of Jimmy (Merlin), who was the wizard chairman during the time of Todd’s exile.  Jimmy, also exiled, was looking for information on how Todd originally accessed the file.  Todd agreed to provide the information, assuming Jimmy was going back to get his own revenge on the other wizards in Leadchurch.

After Jimmy disappeared unexpectedly, US Treasury Agents Miller and Murphy returned to Todd to get more information about the nature of the file.  Todd used their inexperience with the file to escape from prison and start a new life.

Todd time traveled to the 1960s to set up a new identity.  He then traveled to the 1980s and became a successful video game designer.  However, he was not content with just being successful.  He began to work on a massive quest designed to get revenge on the wizards who wronged him.  He developed new computer file techniques to create NPCs to populate his quest, and he created an epic storyline to go with it.

Once Todd was ready to enact his revenge, he kidnapped Phillip, Jimmy, Gary, Jeff and Tyler and brought them to New Zealand to participate in the quest.  They made it to the end of Todd’s quest, except for Jeff who died tragically after falling off a cliff.  Before Todd could complete his revenge and kill the remaining wizards, Martin, Gwen, Roy and Brit the Younger came to their rescue.

After Brit freed Jimmy, he teleported away to plan a rescue.  When he returned, he freed the other captured wizards and took Todd to his penthouse in Reno.  There, Jimmy gave him a choice between being sent back to prison or being wiped from existence.  When Todd chose not to go back to prison, Jimmy placed a hand on Todd’s head and deleted him.
Smoke

1981.5.14

詹姆斯．波特 (James Porter)，代號「Smoke」是S.A.S.在「彩虹六號：圍攻行動」的小隊防衛者。最大特色就是他持有 Z8 遙控毒氣炸藥，這種致命氣體會傷害任何暴露其下的人員，無論敵友。

\*Smoke 在英文中為「煙霧」之意

## 角色側寫

波特並不是學術出身，儘管他在中學時期的自然領域表現出色，對於生物與解剖極感興趣。在進入大學就讀以前，波特用假身分投入英國陸軍，以規避雙親同意。

### 心理素質

對於刺激的追尋往往讓他忽略自身安全，在戰鬥中無懼的表現讓他在防禦任務上表現出色。但他似乎十分享受戰鬥中的混亂與破壞。他的毒氣炸藥混和成分只有他自己清楚，透過遙控引爆有效來封鎖敵方進攻。

### \*相關表現

在完成新訓後，波特駐紮於北愛爾蘭的貝爾法斯特(Belfast)。在2007年3月的《柏林宣言》簽署後，不耐安定的他為了尋找生活刺激，加入陸軍的拳擊隊擔任中量級拳手。

## 遊戲中的表現

Smoke因其二甲二速的原因可讓玩家選擇守點和打野兩種玩法，可使用遙控毒氣炸彈為自已掩護及短暫阻止進攻方進入，

## 可用裝備

 次要武器
 工具
 特殊工具

### Z8 遙控毒氣炸藥

波特請求裝備的可攜式的防衛系統，能夠對目標範圍內的入侵者造成最多傷害。他可以在一定距離外觀測氣體釋放的效果。這種炸藥是經由多種生化原料混和，會對接觸到的人員產生立即性的危害。

圖集
--
Twitch

1988.10.12

埃瑪紐．畢尚 (Emmanuelle Pichon)，代號「Twitch」

是G.I.G.N.在「彩虹六號：圍攻行動」的小隊攻堅者。最大特色就是她能使用RSD 1號震懾型無人機，不只能夠定位敵方電子用品，也能透過上面安置的微型電擊槍分散敵方注意力或是破壞關鍵陷阱。

\* "Twitch" 在英文中具有「抽搐」「劇痛」之意。

## 角色側寫

出生在充滿歷史氣息的南錫，畢尚在一個良好教育的家庭環境中成長，尤其是數學與科學。早期參加電腦程式設計競賽，這經驗讓她在16歲時利用所學成為軍校生。2008年，20歲的畢尚成為G.I.G.N.最年輕的小組成員。

### 心理特質

畢尚能夠示範操作複雜的機械系統。不像大部分的工程技師的無情與疏離特質，充滿同情心的她認為科技最大的用途應該是在於增進生活品質。並以此為信仰在軍禮生涯中貫徹實踐。

## 可用裝備

FAMAS F2 (突擊步槍)
 次要武器
 工具
 特殊工具

### RSD-1 震懾型無人機

震懾型無人機可以探索區域，並釋放電擊。可以通過各種障礙地形，並且可以藉由電擊襲擾以分散敵方的注意力。第一台官方的RSD 1 是出現在巴黎的一次人質事件。一個精神不穩定的疑犯將自己封鎖於一間便利商店，並挾持多名人質。於是GIGN 佈署了一輛RSD-1 輕鬆地解決了此事件。畢尚就在網站上執行此行動，逼迫該名疑犯繳械投降。整件事情以零傷亡落幕。

圖集
--
Marilyn Monroe

* Official Music Video
* Lyric Video
* Makeup challenge

**Marilyn Monroe** is a single by Astrid S, first released on Spotify on August 21, 2020. The official audio and music video were both quickly uploaded on Astrid S' Youtube Channel later that same day with a special make-up challenge being uploaded shortly afterwards. It is the third track on Astrid's fifth EP, AS1.

## Lyrics

[Verse 1]

If I sing something you don't like

Am I the problem?

’Cause I think I've been holding back

It's not what I wanna

[Pre-Chorus]

If I show a little bit more skin

Already know what you’re gonna think

Don't tell me what I'm gonna do, what I don't

I will decide what I will, what I won't

Is it like Marilyn Monroe

If I wanna do it on my own?

Don't tell me what I'm gonna do, what I don't

I’m gonna do it the way I want (Woo)

[Chorus]

You do you, you don’t do me (Woo)

You do you, you don't do me

[Verse 2]

If I slept with a hundred guys

You’d think it's a crime

The less I wear (Less I wear), the more you criticise

I'm just a thing, ain't I?

[Pre-Chorus]

My lips are a little bit more red

But that doesn’t take away what's said

Don't tell me what I'm gonna do, what I don't

I will decide what I will, what I won't

Is it likе Marilyn Monroe

If I wanna do it on my own?

Don't tell me what I'm gonna do, what I don't

I'm gonna do it thе way I want

[Chorus]

You do you, you don't do me (Woo, you don't do me)

You do you, you don't do me

[Bridge]

I've got some things to say, it's easy to explain

I don't need permission to be who I wanna be

I've got some things to say, it's easy to explain

Mmm, you do you, you don't do me

[Chorus]

You do you, you don't do me (Woo, you don't do me)

You do you, you don't do me (Woo, you don't do me)

You do you, you don't do me (Woo)

[Outro]

(Woo)
Min Jieun

"Es simplemente ... nada fuera de lo común"

*Min Ji-Eun es un personaje secundario. Ella era una compañera de clase de Oh Sangwoo, pero fue asesinada relativamente rápido en la historia.*

## ***Acerca de:***

*Min Ji-Eun fue un personaje secundario introducido en el (capítulo 15) manhwa "Killing Stalking". Ella era una compañera de clase que estaba enamorada de Sangwoo.*

*Siendo un personaje tan pequeño, no sabemos nada sobre el pasado de Ji-Eun.*

## ***Apariencia:***

*Min Ji-Eun es una mujer de aspecto atractivo.*

*Ella tiene el pelo largo y castaño a un lado y termina más allá de sus hombros. Los ojos marrones de Ji-Eun son grandes y circulares, complementando el resto de sus rasgos. Un pequeño lunar se encuentra en la parte superior de su pómulo derecho y un corazón rosado el cual está dibujado se encuentra en su pómulo izquierdo.*

*Durante todo el tiempo que la vemos, el estilo de ropa de Ji-Eun es muy moderno y femenino.*

*"Nunca lo entendí cuando alguien me dijo que le gustaba primero".*

## ***Personalidad:***

*La personalidad de Min Ji-Eun era bastante grosera e ignorante, intimidando a Bum junto con sus amigos. Ella tiende a ser muy juguetona y coqueta con Oh Sangwoo.*
Yoon Bum

Victima, asesino en serie

**Yoon Bum (****윤범)** es el Protagonista de **Killing Stalking.**

## Apariencia

Es un chico de tez pálida, estatura baja y aparente poco peso. Su cabello es de color negro y desordenado, tiene ojos de un tono oscuro y ojeras.

Antes de entrar en casa de **Sangwoo** se le podía ver usando una chaqueta verde oscura y una camisa de rayas por debajo con unos pantalones oscuros.

Después de entrar en casa de **Sangwoo**, éste le coloca una camisa de rayas, una falda de tono oscuro con unas cuantas bandas en su cuerpo.

## Historia

Es un chico con problemas de autoestima y personalidad, quien se enamora de **Sangwoo**, un compañero de universidad que estuvo en servicio militar junto a él.

El amor de **Yoon bum** se convirtió en una obsesión, llevándolo a ser un acosador y seguirlo hasta su casa. Una vez descifra el código para entrar revisa el lugar y queda sorprendido por lo que encuentra.

Debido a esto decide intentar escapar varias veces del sótano luego lo encontro y le hizo hacerle una felacion, desde ese dia cambio un poco la relacion entre ellos dos.
Pulse

1984.10.11

傑克．艾斯特蘭達 (Jack Estranda)，代號「Pulse」

是S.W.A.T.在「彩虹六號：圍攻行動」的小隊防衛者。最大特色就是他能夠使用HB-5 心跳探測儀，透過建築材料監控敵人的蹤跡。

\*Pulse 在英文中為「脈搏」之意

## 角色側寫

母親辛西婭．艾斯特蘭達(Cynthia Estrada)；父親則是馬克．彼得森(Mark Peterson)，「脈搏」出生於西摩爾強森空軍基地(Seymore Johnson Air Force Base)，從小就以軍眷身分被養育成人。並在成年後追尋其母親的步伐，成為一名情報軍官。

2007年，脈搏成為FBI 生物識別技術的實習人員，並在2010年時投入實務現場，進入武器戰術小組服務。他結合了生物與通信知能成為小隊菁英。同時也是一個天生的談判專家。他參與研發的心跳探測儀在薩莫斯特外展首次亮相。

### 心理特質

他總是在各單位間調度，接觸新的人事物。傑克因此十分著迷對人的行為特徵辨認。因此，他能透過一個人的表現方式與肢體語言推斷出其背景與性格。

## 在遊戲中表現

Pulse可以在大10米範圍內用心跳偵測儀透視任何東西來發現敵人。

Ps. IQ可以在20米範圍內發現Pulse使用中的偵測器

## 可用裝備

 次要武器
 工具
 特殊工具

### HB-5 心跳探測儀

在FBI 生物識別單位服務時，傑克開發了可攜式的探測裝置，能夠追蹤疑犯的血流與脈搏。同時該儀器也是一個有用的非侵入性審訊工具。因為審訊者可以藉由觀察疑犯的血流和脈動來辨認其在壓力下的真實反映。

心跳感測儀搭配了高辨析度的螢幕，用以感測目標距離。改裝過的感測儀同時也成為FBI SWAT在室內掃蕩行動中的重要幫手。

圖集
--
PT92

PT92標準型

PT92 "Luison"

數據
--

(僅有標準型能夠裝備)

## 實槍外觀

此槍曾於虹彩六號前代登場，在「虹彩六號：圍攻行動」中以兩種形象出現為巴西特警行動營 (BOPE) 所使用。

標準型PT92、"半狼人(Luison)"

簡介
--

金牛座PT92手槍是貝瑞塔92的持特許生產證再生產版本，並且具有各種各樣的表面處理與多款把樣式。
就像貝瑞塔，金牛座PT92的採用了開放式套筒設計，套筒的上半部分被切去並且暴露了槍管本身。原來的PT92酷似原來的貝瑞塔92，雖然它在當其時不尋常的地方則是在於它所具有的方形扳機護圈在擊發用於支撐另一隻手的食指，而這個特徵於隨後的1985年引進到貝瑞塔92的型號並且衍生為92SB-F（92F）。在大多數情況下，金牛座PT92比貝瑞塔92是更為便宜的。

-〈本節刪改自維基百科〉

### 標準型

在「骷髏雨行動」中，此槍命名為「PRB92」，奇怪的有著圓形板機護環而且彈匣釋放鈕位於握把底部，令其看起來更像貝瑞塔92初期型，被特別警察行動營所使用。

### Luison

在「骷髏雨行動」中，此槍裝上特製消音器，由Caveira使用。"Luison"是瓜拉尼神話中神出鬼沒的半狼，會因月圓而變化。
Lezhin Comics

**Lezhin Comics** (coreano: 레진코믹스) es un servicio de webtoons distribuido por Lezhin Entertainment, fundado el 7 de Junio del 2013 por el bloguero "Han Hye-sun", que trabajaba bajo el seudónimo de "Lezhin", y el desarrollador "Kwon Jung-hyuk".

Se dice que ha dado un vuelco a la percepción convencional coreana de que "el manhwa web es gratuito" y ha creado un modelo de negocio parcialmente pagado, superando el punto de equilibrio en su primer mes de servicio, y desde entonces ha seguido creciendo entre un 20 y un 40% cada mes, manteniendo la posición número 1 en ventas en la categoría de manhwa coreano con sistema operativo Android. Inusualmente para una empresa de riesgo, ha sido rentable desde su primer año de funcionamiento y ha atraído la atención, incluida la presentación de un estudio de caso en un taller organizado por el Ministerio de Ciencia Creativa del Futuro, una agencia gubernamental surcoreana. Lezhin Comics ofrece webtoons gratuito y de pago, y es utilizado por un gran número de usuarios en idiomas como en coreano, japonés, inglés y español.
Ford-Fulkerson Algorithm

A simple and practical max-flow algorithm.

Main Idea: Find valid flow paths until there is none left, and add them up.

## Some Definitions

**Residual Graph** of a flow network is a graph which indicates additional possible flow. If there is a path from source to sink in the residual graph, then it is possible to add flow. Each edge of the residual graph has a value called **Residual Capacity** which is equal to the original capacity of the edge minus the current flow. Residual capacity is basically the current capacity of the edge.

## Algorithm

Steps:

1. Start with flow, f(e) = 0 for all edges, e ∈ E. Set ftotal = 0.
2. Use DFS to find an s to t path P where each edge has flow, f(e) < c(e), capacity. Let f be the minimum capacity value on that path.
3. Augment flow along path P:
	1. Add f to ftotal
	2. For every edge u→v on P
		1. Decrease c(u→v) by f
		2. Increase c(v→u) by f
4. Repeat steps 2 and 3 until there is no path from s to t.

Analysis:

* Assumption: Capacities are integer valued.
* Finding a flow path takes O(n+m) time.
* We send at least 1 unit of flow through that path.
* If the max flow is f\* then the time complexity is O((n+m)f\*)
	+ "Bad" in that it depends on the output of the program
	+ Nonetheless, easy yo code and works well in practice

## Edmond-Karp Implementation

If the residual capacity is 0, there is no edge between two vertices of residual graph. We can initialise residual graph as the initial graph as initially there is no residual flow and residual capacity is equal to original capacity. To find an augmenting path, we do a BFS of the residual graph.

Using BFS, we can find if there is a path from source to sink and also build the parent array. Using this parent array, we traverse through the found path and find possible flow through this path by finding the minimum residual capacity along the path. We later add the found path to the overall flow.

The important thing is, we need to update residual capacities in the residual graph. We subtract flow from all edges along the path and we add the path flow along the reverse edges. We need to add path flow along the reverse edges because we may later need to send flow in reverse direction.

The main idea of *Edmonds-Karp* is to use BFS as BFS always picks the path with minimum number of edges. So, the worst case time complexity using BFS reduces to O(VE2).

## See Also

* Max Flow Problem
* Dinic's Algorithm
Tower of Hanoi

The object of this game is to move N disks from left peg to right peg using middle peg as an auxiliary holding peg. At no time may a larger disk be placed on a smaller disk. The figure represents starting state for N=3 disks.

## Proof

It can be shown by principle of mathematical induction that this can be solved for any arbitrarily large values of N.

Basis: A single disk can be moved from left peg to right peg. So, base case is trivially true.

Hypothesis: Let us assume that this problem can be solved for *k* disks. Hence, *k* disks can be moves from one peg to another using an auxiliary peg. P(*k*) is assumed to bue.re t

Inductive Step: If this holds for *k* disks, then move *k* disks to middle peg using right peg as an auxiliary peg. Then, move (*k+1*)th disk to the right peg. Then move *k* disks from middle peg to right peg. Hence, whenever we can move *k* disks, we can also move *k+1* disks.

thereby showing that indeed *P*(*k* + 1) holds.

Since both the basis and the inductive step have been performed, by mathematical induction, the statement *P*(*n*) holds for all natural numbers *n*. Q.E.D.

## Logic

Here is a recursive program that solves the puzzle in prolog. It consists of two clauses.

```
move(1,X,Y,_):-write('move top disk from '),write(X),write(' to '),write(Y),nl.

```

```
move(N,X,Y,Z):-N>1,M=N-1,move(M,X,Z,Y),move(1,X,Y,_),move(M,Z,Y,X).

```
Catalan Numbers

Now what exactly are these numbers? Here are the first few:

 2
 3
 4
 5
 6
 7
 8
 9
 10

For the general case, I could for example give you one of these definitions (where C(N) denotes the N-th Catalan number):

1. C(N) := choose(2N,N) / (n+1)
2. C(0) := 1, and C(N+1) := Sum(i=0 to n) C(i)\*C(n-i)
3. C(N) := The number of binary trees that can be built with N nodes.
4. C(N) := The number of possible triangulations (with N triangles) of a convex polygon with N+2 sides.

It turns out that all these definitions are equivalent. But there are big differences in quality:

* 1. and 2. give a definition without any meaning. Without meaning, they're senseless. These might be helpful when we need to calculate the values, but they're bad definitions in a deeper sense.
* 3. and 4. are great, and the binary tree problem is probably the problem where most of us first saw the Catalan Numbers. Unfortunately, these don't come with mathematical formulas to calculate the values. But it's fairly easy to prove that the number of binary trees is equivalent to the recursive 2. definition.

On this page, I will therefore use the 3. definition (the one with binary trees).
A* Algorithm

#### **f(n) = g(n) + h(n)**

where g(n) represents the (computed, actual) cost of getting to the node n along the current path to it, and h is the heuristic function. Thus, f(n) estimates the cost or effort to successfully get from start to goal by going through node n (along some particular path)

   A common cost function g(-) is *path length*. The cost of getting from the start node to a current node is the length of relevant path. This can be computed incrementally.

It is important to realise that this kind of search can follow a contiguous path for a while, until some previously unchosen node has smallest f(-) value, in which case this node n is expanded, and its children considered.

## Pseudocode

1. Start with the start node, place it in the (previously empty) list **open**.
2. Let n be the first node on **open**. Remove n from **open**. Fail if **open** is empty.
3. If n is the goal, then a solution has been found (optional: stop here).
4. Expand n, obtaining all of its children, and evaluate f(-) for each item. Insert each of these children into **open**, maintaining order where the smallest f(-) values come first.
5. Repeat from step 2.
Tree

The Tree Data Structure is a special graph with the following characteristics:

* has *E = V - 1* (any O(V + E) algorithm is O(V))
* it has no cycle
* it is connected
* there exists one unique path from any pair of vertices

### Diameter of a Tree

The diameter of a graph is defined as the greatest distance between any pair of vertices. To find the diameter of a graph, we first find the shortest path between each pair of vertices. The greatest length of any of these paths is the diameter of the graph. For general graph, we may need O(V3) Floyd Warshall's Algorithm. However, if the given graph is a tree, the problem is simpler: do DFS/BFS from any node *s* to find furthest vertex *x*, then do DFS/BFS one more time from vertex *x* to get the true furthest vertex *y* from *x*. The length of the unique path along *x* to *y* is the diameter of that tree. This solution only requires two calls of O(V) graph traversal algorithm.
Breath First Search

Breath First Search (BFS) is another graph traversal algorithm. In BFS, we expand the neighbour nodes or links for any node first, before moving to next level neighbours. We can implement this using a simple queue i.e. "first in, first out" (FIFO). It is guaranteed to find the shortest path to goal state.

It is memory intensive (uses more memory than DFS) if the state space is large.

## Algorithm

BFS starts with insertion of initial source vertex s into a queue, then processes the queue as follows: take out the front most vertex u from the queue and enqueue each of the unvisited neighbours of u. With the help of the queue, BFS will visit vertex s and all vertices in connected component that contains s layer by layer. This is why it is named *breath-first.* BFS algorithm also runs in O(V+E) on a graph represented using an Adjacency list.

```
vector < pair<int, int> > AdjList;
void BFS(int n)
{
   queue<int> q;
   map<int, int> dist;

   q.push(n);
   dist.insert(make_pair(n,0));

   while(!q.empty())
   {
       int u = q.front();
       q.pop();
       printf("Visit %d, Layer %d\n", u, dist[u]);
       for(auto const& v: AdjList[u])
       {
           if(!dist.count(v->first))
           {
               dist[v->first] = dist[u]+1;
               q.push(v->first);
           }
       }
   }
}

```

Here, we use queue to order the sequence of visitation and map to record if a vertex has been visited or not - which at the same time records the distance (layer number) of each vertex from source vertex. This is important as it can be used to solve the special case of Single-Source Shortest Paths problem as discussed below.

## Other Applications

### Single-Source Shortest Paths (SSSP) on Unweighted Graph

The fact that BFS visits vertices of a graph layer by layer from a source vertex turns BFS as a good solver for Single-Source Shortest Paths (SSSP) problem on unweighted graph. This is because in unweighted graph, the distance between two neighbouring vertices connected with an edge is simply one unit. Thus the layer count of a vertex that we have seen previously is precisely the shortest path length from source to that vertex.
List Search Algorithms

Lists are linear data structures (one-dimensional collection), for example, an array. Searching in a list involves finding if an element exists in the list or not.

## Major topics

* **Linear Search:** Checking each element one-by-one if it is the element to be found. This does not need the list to be sorted. It searches any list, runs in O(n). Typically a search like this would use a loop to iterate through the list until the required item was found.

* **Binary Search:** Dividing the list into two parts and determining which part the element is in by checking some property. Typically done by sorting the list and checking for the equality of the middle element.
* **Ternary Search:** Similar to binary search but the list is divided into 3 parts each time and the part where the element is likely to be is determined.
* **N-ary Search:** This is an extension of binary and ternary search algorithms. Here the list is divided into n distinct sub-lists and the list which is most likely to contain the element is determined and searched.
Minimum Cut Problem

This is an alternate formulation to the Max Flow Problem.

* We want to remove some edges from the graph such that after removing the edges, there is no path from s to t.
* The cost of removing e is equal to c(e).
* The minimum cut problem is to find a cut with minimum total cost.

**Theorem**: Minimum Cut = Max Flow

Since we know the max flow, we can use the Residual Graph to find the min cut.

## Algorithm

Steps:

1. Mark all nodes reachable from S. Call this set of reachable nodes A.
2. Now separate these nodes from the others. Cut edges going from A to V - A
3. Now look at the original graph and find the cut.
Data Structures

A Data Structure is a way of defining, storing and retrieving data in a structural and systematic way. A data structure may contain different type of data items.

## Types of Data Structures

Data structure availability may vary based on programming languages. There are generally two types of data structures: linear and non-linear.

### Linear Data Structures

A linear data structure has linearly arranged data items. The next item can be located in next memory address. It is stored and accessed in a sequential manner.

* Lists
* Arrays
* Stacks
* Queues

### Non-Linear Data Structures

A non-linear data structure is one in which each data item is connected to several other data items, such that a data item has the possibility to reach one-or-more data items.

* Hash Table
* Heaps
* Trees
	+ Binary Search Trees
* Graph

## Operations on Data Structures

The following operations can be performed on any data structure:

* **Insertion**: Adding a data item.
* **Deletion**: Removing a data item.
* **Traversal**: Accessing and/or printing all data items.
* **Searching**: Finding a particular data item.
* **Sorting**: Arranging data items in a pre-defined sequence.
Algorithm

An Algorithm is a step by step procedure, which defines a set of instructions to be executed in a certain order to get desired output.

There are four important factors an Algorithm must consider:

1. Completeness: Is a solution guaranteed to be found if one exists?
2. Optimality: Is the solution guaranteed to be the best/lowest cost solution if more than one solution may exist?
3. Time Complexity: The upper bound on the time required to solve the problem, as a function of the complexity of the problem.
4. Space complexity: The upper bound on the amount of storage space (memory) required at any point while running the algorithm.

## Algorithm Analysis

A problem can be solved in more than one way. So, many solution algorithms can be presented for the same problem. We analyse the available algorithms to find and implement the best suitable algorithm.

A correct and optimal algorithm can be analysed in two ways: time and space, as a measure of execution time and extra space required by the algorithm.

Asymptotic analysis of an algorithm refers to defining the mathematical bounds/framing of its runtime performance. Using asymptotic analysis, we can provide three levels of mathematical binding of execution time of the algorithm:

* Best case is represented by Ω(n) notation.
* Worst case is represented by Ο(n) notation.
* Average case is represented by Θ(n) notation.

## Basic Approaches

There are three commonly used approaches to develop algorithms:

1. **Greedy Approach**: Finding a solution by choosing the next best option.
	* Travelling Salesman Problem
	* Prim's MST Algorithm
	* Kruskal's MST Algorithm
	* Dijkstra's MST Algorithm
	* Graph - Map Colouring
	* Graph - Vertex Cover
	* Fractional Knapsack Problem
	* Job Scheduling Problem
2. **Divide and Conquer**: Dividing a problem into distinct sub-problems and solving them separately.
	* Merge Sort
	* Quick Sort
	* Binary Search
	* Strassen's Matrix Multiplication
	* Closest Pair (Points)
3. **Dynamic Programming**: Dividing a problem into overlapping sub-problems and solving each of these subproblems just once, storing their solutions.
	* Fibonacci Number Series
	* 0/1 Knapsack Problem
	* Tower of Hanoi
	* All Pair Shortest Path by Floyd-Warshall
	* Shortest Path by Dijkstra's Algorithm
	* Project Scheduling
Selection Sort

**Selection Sort** is a list sorting algorithm. It is very easy to implement but is rather inefficient.

## Algorithm

For each position in the List the algorithm searches for the smallest Item in the list starting at that point. When that item is found it is swapped into the current position.

## Pseudocode

```
SELECTION SORT (A(n))
   for i = 1 to n-1
      min = i
      for j= i+1 to n
         if A[j]<A[i]
            min = j
            temp = A[i]
            A[i] = A[min]
            A[min] = temp
```

 See Also

* Sorting
Searching Algorithms

A **searching** algorithm is an algorithm that aims to find an item within a collection of items.

## Major Topics

There are many kinds of searching algorithms, including:

* List Search Algorithms, which search for an item in a linear (one-dimensional) collection, for example, an array.
* Tree Searching Algorithms, which search for an item in a tree.

* String Searching Algorithms, which search for patterns within strings.
* Graph Searching Algorithms, which search for an node or a path in a graph.

## Search Techniques

There are two major search methodologies:

#### Brute Force and Exhaustive Search. It is of two types:

* BFS
* DFS

#### Heuristic Search uses a *heuristic function* to help guide the search. When a node is expanded, each of its children is evaluated using a *search function*. This can be of many types:

* Hill Climbing
* A\* Algorithm
* AO\* Algorithm
Heap Sort Algorithm

Heap is a tree-based data structure that satisfies the *heap property*: for each parent-child pair, the key (value) of parent is ordered with respect to key of the child. Heaps are an implementation of abstract data structure called priority queue. In fact, priority queues are also called heaps.

A heap can be classified into: Max-heap and Min-heap.

1. In Max-heap, for each parent-child pair, the value of parent is greater than the value of child.
2. In Min-heap, for each parent-child pair, the value of child is greater than the value of parent.

## Algorithm

The code for heapsort and kth-smallest element in C++ is presented below:

```
include <bits/stdc++.h>
using namespace std;

```

```
void heapify(vector<int> &v, int idx, int n)
{
     /* make sure that parent node is larger than both children and if it is not then perform swapping */
     int left = 2*idx;
     int right = 2*idx+1;
     int largest=idx;
     if(left < n && v[left] > v[idx])
          largest = left;
     if(right < n && v[right] > v[largest])
          largest = right;
     if(largest != idx)
     {
          swap(v[idx], v[largest]);
          heapify(v, largest, n);
     }
}

```

```

void buildHeap(vector<int> &v, int n)
{
     for(int i = n/2 - 1; i >= 0; --i)
          heapify(v, i, n);
}

```

```
void heapsort(vector<int> &v, int n)
{
     buildHeap(v, n);
     for(int i = n-1; i >= 0; --i)
     {
          swap(v[0], v[i]);
          heapify(v, 0, i);
     }
}

```

```

int kthsmallest(vector<int> &v, int k)
{
     /* return kth smallest element in collection for valid k>=1 */
     int n = v.size();
     vector<int> a(v.begin(), v.begin() + k);
     buildHeap(a, k);
     for(int i = k; i < n; ++i)
     {
          if(v[i] < a[0])
          {
               a[0] = v[i];
               heapify(a, 0, k);
          }
     }
     return a[0];
}

```

```
int main()
{
     /* Testing our kthsmallest and heapsort implementation */
     vector<int> v;
     vector<int>::iterator it;
     int n,p,q,r;
     cin>>n;
     for(int i=0;i<n;++i)
     {
          cin>>p;
          v.push_back(p);
     }
     for(int i=1;i<=n;i++)cout<<kthsmallest(v,i)<<endl;
     heapsort(v,n);
     for(it=v.begin();it!=v.end();it++)
     {
          cout<<*it<<endl;
     }
     return 0;
}

```
Prolog Lists

List process- handling sequences of elements - is a powerful technique in prolog.

Prolog uses brackets [...] as list builder. The notation [X|Y] represents a list whose first element is X and Y as its tail. A finite list can be explicitly enumerated, such as, [1,2,3,4].

## Declaring lists

Here is how you declare a domain for list of integers.

```
domains
     list=integer*

```

Similarly you may also declare symbol\* or real\*.

## Predicates

member(integer,list)

delete(integer,list,list)

append(list,list,list)

reverse(list,list)

perm(list,list)

subset(list,list)

union(list,list,list)

intersection(list,list,list)

mergesort(list,list)

split(list,list,list)

merge(list,list,list)

## Clauses

member(X,[X|R]).

member(X,[Y|R]):-X<>Y,member(X,R).

delete(X,[X|R],R).

delete(X,[H|T],[H|S]):-delete(X,T,S).

append([],X,X).

append([H|T],Z,[H|S]):-append(T,Z,S).

reverse([],[]).

reverse([H|X],Y):-reverse(X,Z),append(Z,[H],Y).

perm([],[]).

perm([X|Y],Z):-perm(Y,W),delete(X,Z,W).

subset([],\_).

subset([H|T],S):-member(H,S),subset(T,S).

union([],Z,Z).

union([H|T],X,Y):-member(H,X),union(T,X,Y).

union([H|T],X,[H|Y]):-not(member(H,X)),union(T,X,Y).

intersection([],X,[]).

intersection([H|T],X,[H|Y]):-member(H,X),intersection(T,X,Y).

intersection([H|T],X,Y):-not(member(H,X)),intersection(T,X,Y).

mergesort([],[]).

mergesort([A],[A]).

mergesort([A,B|T],S):-split([A,B|T],L1,L2),mergesort(L1,S1),mergesort(L2,S2),merge(S1,S2,S)

split([],[],[]).

split([A],[A],[]).

split([A,B|R],[A|Ra],[B|Rb]):-split(R,Ra,Rb).

merge(A,[],A).

merge([],B,B).
FloodFill Algorithm

In our matrix problem, we don't yet have a nice graph representation. We could build a graph representation from a given matrix and then run the general CC algorithm on it, but it's much easier to directly hardcode the graph structure into the algorithm. That means, instead of having an explicit list of neighbours for each node, we look at the cells around a cell and view them as "neighbours" if they have the same colour. Furthermore, our "numberOfComponents" will have two nested loops to walk over all "nodes". Usually this algorithm is called something like "FloodFill", since we somehow "flood" or "fill" the regions.

This time the code is in Java. The matrix is given as an array of Strings "land". Height and width of the matrix are stored in "m" and "n", respectively.

```
  String[] land;
  int m, n;
  boolean[][] seen;

  void flood ( int i, int j, char farmer ) {
      return;
    seen[i][j] = true;
    flood( i-1, j, farmer );
    flood( i+1, j, farmer );
    flood( i, j-1, farmer );
    flood( i, j+1, farmer );
  }

  int numberOfRegions ( String[] land ) {
    this.land = land;
    m = land.length;
    n = land[0].length();
    seen = new boolean[m][n];

    int answer = 0;
    for( int i=0; i<m; ++i ){
      for( int j=0; j<n; ++j ){
	if( ! seen[i][j] ){
	  ++answer;
	  flood( i, j, land[i].charAt(j) );
	}
      }
    }

    return answer;
  }

```

We should only visit a neighbour cell if it has the same colour as the current cell. But checking this directly would require much code, since we also have to check if the coordinates of each neighbour are inside the matrix before looking at its colour. Instead, we defer this check and blindly visit all neighbour cells and we add the out-of-bounds check once and for all at the \*entrance\* of "flood". Since the visited node doesn't know from where it was visited, we have to give him at least the information what colour we are searching for, here I call it "farmer".

The variable "farmer" could also be global like land, m and n. On the other hand, these variables could also be passed as parameters to "flood", like "farmer". People tend to make things global, since that usually requires less typing and might run a bit faster

If you can write the cell contents (if you're using C++ strings or if you use two-dimensional arrays) then you can omit the "seen" matrix and instead overwrite the "land" matrix cells with something that doesn't appear in it otherwise, for example with '-'. This will also show that a cell has already been seen and will even be automatically tested when we test if the cell is of the colour we're currently searching for.
Comb Sort Algorithm

**Comb sort** is a comparison sorting algorithm. It is an exchange sort, similar to bubble sort.

In comb sort, *gaps* (distance of two items from each other) are introduced. The gap in bubble sort is 1. The gap starts out as a large value, and, after each traversal, the gap is lessened, until it becomes 1, where the algorithm basically degrades to a bubble sort. This idea can practically *kill* turtles because some of them would "jump" to the beginning of the list early on.

The *shrink factor* determines how much the gap is lessened. This value is crucial because a small value means that it would be slower for the gap to degrade to 1, slowing down the process, while a large value will not effectively kill turtles. An ideal shrink factor is 1.3.

## Algorithm

```
comb_sort(list of t)
    gap = list.count
    temp as t
    swapped = false
    while gap > 1 or not swapped
        swapped = false
        if gap > 1 then
            gap = floor(gap/1.3)
        i = 0
        while i + gap < list.count
            if list(i) > list(i + gap)
                temp = list(i) // swap
                list(i) = list(i + gap)
                list(i + gap) = temp
            i += 1

```

 See Also

* Sorting

**Comb Sort**